我有一个主STA线程,调用COM对象上的许多方法,还有一个次要STA线程,也在同一对象上执行大量工作。我希望主线程和次要线程并行工作(即,我期望从主线程和次要线程中得到交错输出)。我知道我需要定期在主线程中泵送消息 - 在C++中调用Get / Translate / DispatchMessage就可以解决问题。
但是我在C#中遇到了问题。起初,我在主线程中使用CurrentThread.Join()将控制权交给第二个线程。它没有起作用。然后我转向Application.DoEvents() - 每当我想要第二个线程运行时,在主线程中调用它。结果是第二个线程很快就获得了控制权,并且不会放手 - 直到第二个线程全部完成,主线程才能继续。
我阅读了文档,说Application.DoEvents()将处理所有等待事件 - 而GetMessage()只检索一个消息。
应该怎么做?是否有C#等效的Get/Translate/DispatchMessage?
谢谢
更新:第二个线程运行得太快,向主STA线程发送了许多COM调用消息。我只是在第二个线程中添加了延迟以减慢速度。现在两个线程基本上并行运行。 但我仍然想知道是否有C#等效的GetMessage/TranslateMessage/DispatchMessage。
但是我在C#中遇到了问题。起初,我在主线程中使用CurrentThread.Join()将控制权交给第二个线程。它没有起作用。然后我转向Application.DoEvents() - 每当我想要第二个线程运行时,在主线程中调用它。结果是第二个线程很快就获得了控制权,并且不会放手 - 直到第二个线程全部完成,主线程才能继续。
我阅读了文档,说Application.DoEvents()将处理所有等待事件 - 而GetMessage()只检索一个消息。
应该怎么做?是否有C#等效的Get/Translate/DispatchMessage?
谢谢
更新:第二个线程运行得太快,向主STA线程发送了许多COM调用消息。我只是在第二个线程中添加了延迟以减慢速度。现在两个线程基本上并行运行。 但我仍然想知道是否有C#等效的GetMessage/TranslateMessage/DispatchMessage。