我需要在我的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()
线程,并且当新的COM对象被卡住时Initial()
将永远挂起。
我能知道为什么new
需要永远,并且我可以在花费太长时间时打断它吗?