在VSTO添加用於Outlook單擊按鈕火災2種方法:第一種執行上MailItem Object
簡單的操作和運行快,第二個執行需要更多的計算時間等多項任務。我希望第二個在「後臺」運行,以便MailItem Object
上的操作能夠快速響應。現在我無法弄清楚如何做到這一點,只有在完成2種方法後,MailItem Object
上的操作才能在Outlook中看到。C#VSTO附加任務序列
public void ButtonAction(Office.IRibbonControl control)
{
bool processed = ActionsOnMailItem();
string output = OtherTasks(processed);
}
public static bool ActionsOnMailItem()
{
Outlook.Selection selected = olApplication.ActiveExplorer().Selection;
bool isEmailProcessed = false;
try
{
foreach (Outlook.MailItem mailItem in selected)
{
mailItem.SaveAs(saveItemPath, Outlook.OlSaveAsType.olMSG);
}
isEmailProcessed = true;
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
isEmailProcessed = false;
}
return isEmailProcessed;
}
public static string OtherTasks(bool isEmailProcessed)
{
if (isEmailProcessed)
{
// Perform several tasks requiring computing time
...
}
}
我已經與async
方法,但都沒有成功(沒有僵局但是對於第一種方法沒有快速反應既不)嘗試。在深入研究之前,我想知道這是否是正確的道路,或者是否有更直接的方法來實現。
嘗試從VSTO插件內的不同線程訪問COM對象可能不是一個好主意 – MickyD