我需要在我的 C# 应用程序中嵌入一个进程外 COM 执行。COM 执行是用 C++/ATL 编写的。有时我的 COM 创建过程不会启动,所以我设法使用超时来中断它。
我的 COM 对象初始化过程:
using MyCOM;
//...
private MyCOM.Mylib _com; // COM object
private void MyInitJob()
{
_com = new MyCOM.Mylib();
}
private bool Initial()
{
System.Threading.Thread mythread = new System.Threading.Thread(MyInitJob);
mythread.Start();
if (!mythread.Join(5000))
{
mythread.Abort();
return false;
}
else
{
return true;
}
}
上面的代码似乎在达到超时时无法停止MyInitJob()
线程,并且Initial()
当新的 COM 对象被卡住时将永远挂起。
我能知道为什么new
需要永远吗,当它需要太长时间时我可以打断吗?