我有asp.net
Web Api 2
正在使用外部COM Object (pvxcom)
的应用程序。在某些原因COM对象挂起的情况下,我没有机会报告pvxcom
的错误。
我需要找出一些可以绕过这个问题的东西。我想澄清一些观点。
你有任何其他想法,如何弄明白?
答案 0 :(得分:2)
你可以在一个线程中运行它,你可以杀死这个线程,如果它挂起或花费的时间比预期的要长。
这是我的MVC草图,但对于WebApi代码将是相同的。这基于this answer:
public ActionResult Index()
{
var sw = new Stopwatch();
Exception threadException = null;
var workerThread = new Thread(() =>
{
try
{
sw.Start();
// Access your COM here instead of sleep
Thread.Sleep(6000);
sw.Stop();
}
catch (Exception ex)
{
threadException = ex;
sw.Stop();
}
});
var timeoutTimer = new System.Threading.Timer((s) =>
{
workerThread.Abort();
}, null, 5000, Timeout.Infinite);
workerThread.Start();
workerThread.Join();
ViewBag.Message = String.Format("Time: {0}; Exception: {1}", sw.Elapsed, threadException);
return View();
}