我在C#中编写了一个并排的COM DLL。 我在VB6中使用这个DLL。
COM DLL包含一个线程。 一旦我开始这个线程,调用应用程序(在我的情况下是VB6)就会阻塞(意味着我不能在其中做任何事情)。
我正在开始这样的话:
private Thread _startMasterThread;
public void Init()
{
if (_startMasterThread == null)
{
_startMasterThread = new Thread(new ThreadStart(pMasterThread));
_startMasterThread.Priority = ThreadPriority.Highest;
_startMasterThread.Start();
}
}
private void pMasterThread()
{
while (!_bAbortAll)
{
//do something
}
}
ThreadStart来自:
namespace System.Threading
{
[ComVisible(true)]
public delegate void ThreadStart();
}
调用应用程序没有响应是否正常? 我认为,因为它是一个不同的线程,它不会这样做。
答案 0 :(得分:0)
看起来您创建了一个STA线程,然后忽略了为消息泵提供服务。呼叫者将阻止,因为没有人响应他们的消息。因此,UI(调用者)冻结(阻止)。
一些陈旧但高度相关的文章:
阅读完这些内容并了解问题后,解决方案将是显而易见的。切换到MTA或在您的主题中运行消息泵。