2010-09-09 39 views
2

我正在開發C#中的前景插件,我的繼承人啓動:展望外接展開線

private void ThisAddIn_Startup(object sender, System.EventArgs e) 
    { 
     //adds the new issueTopMenu 
     //Search the menu and delete if found 
     RemoveMenubar(); 

     //adds the panel 
     AddPanelToExplorer(); 

     //Method to create new menu 
     AddMenuBar(); 
    } 

我如何能做到這一點對一個線程上運行,因爲它訪問web服務來獲取一些數據,和當展望開始凍結,直到它獲得數據,並且我想宣佈凍結時間。

回答

4

Outlook對象模型使用單線程。所以即使你的插件中有多個線程,如果那些線程正在執行使用Outlook對象模型的代碼,它將作爲單線程應用程序工作。您可以單獨使用不使用Outlook對象模型的代碼,如訪問Web服務並獲取數據並在單獨的線程中執行此代碼。這樣你可以使用多線程。

+0

儘管Outlook *將* marshall訪問主線程的OOM,我發現最好的方式是確保OOM *僅在主線程中使用*。這似乎有助於緩解「隨機」問題。正如所指出的,不觸及OOM(或Winforms等;-)的工作可以在後臺線程中正常運行。 – 2011-05-12 23:07:08