嗨,我是COM的初學者。我想在STA和MTA模式下測試一個COM DLL。我的第一個問題是:是否有可能COM對象支持STA和MTA?關於COM多線程和STA/MTA的問題
現在我想下面的STA代碼片段:
// this is the main thread
m_IFoo;
CoInitializeEx(STA); // initialize COM in main thread
CreateInstance(m_IFoo);
m_IFoo->Bar();
CreateThread(ThreadA);
// start ThreadA
// this is secondary thread
ThreadA()
{
CoInitializeEx(STA);
m_IFoo->Buz(); // call m_IFoo's method directly
}
請問此代碼的工作?我錯過了任何基本的東西?我知道主線程需要一個窗口消息循環來執行其他線程的調用。我必須做任何事嗎?
現在我繼續測試MTA。如果我只是用上面的代碼中的「MTA」替換「STA」,它會起作用嗎?
另一個問題是:由於GUI的線程必須是STA,我無法在GUI線程中初始化和測試MTA?
在此先感謝和遺憾,對我來說是對COM和線程天真。