0

我需要在我的 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需要永远吗,当它需要太长时间时我可以打断吗?

4

0 回答 0