在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