这是我的问题:
如何处理方法执行的超时,场景如下:
我有一个 C# .Net 框架 4.0 Windows 服务应用程序。我添加了对外部 COM 程序集(某个公司的特定软件)的引用。通过这个程序集,我打算针对我的 Windows 服务上的第三方软件处理一些信息,并每 X 分钟重复一次该任务(由用户定义)。这在一个完美的场景中效果很好,问题是当第三方软件出现问题时,该程序集没有响应并且我的 Windows 服务卡在该执行上而没有答案,例如这是该执行的代码:
var calObj = new CAL.Object(CalOperatins.SendNoSavingChanges);
//this SYNC execution method sometimes get stuck and
//the rest of the program just doesn't executes
calObj.TerminateUserSession();
log.Log4Text(string.Format("Service cycle ended, waiting {0} for next execution.",paramTime));
}
正如我在代码注释中提到的,TerminateUserSession的执行是同步的,如果该软件试验了一些问题,我的服务就会卡在那里,并且Log4Text方法(以及它下面的所有内容)都不会执行。
有没有一种方法可以处理TerminateUserSession方法执行的超时,请记住它是一个外部程序集,我不能更改该代码?(是的,我可以发现它是错误的,因为没有超时)
提前致谢。