C# 如何将电子邮件保存到磁盘而不使Outlook无响应/看起来很忙?

C# 如何将电子邮件保存到磁盘而不使Outlook无响应/看起来很忙?,c#,.net,outlook,vsto,save,C#,.net,Outlook,Vsto,Save,我编写了一个小型Outlook插件(VSTO/C#),它将特定的电子邮件存储在用户指定的目录中。我的问题是,有时需要同时保存带有大附件的电子邮件和/或许多(50多封)电子邮件 该插件可以处理所有这些问题,但在某些情况下Outlook get没有响应,并显示一个progressbar。有没有办法防止这种情况发生?(例如,保存这些电子邮件的另一种方式) 如果没有,可能有人对如何“解决”此行为有想法(例如,当用户“使用”Outlook时停止保存) *编辑此操作在.NET 4中进行,并且必须与Outlo

我编写了一个小型Outlook插件(VSTO/C#),它将特定的电子邮件存储在用户指定的目录中。我的问题是,有时需要同时保存带有大附件的电子邮件和/或许多(50多封)电子邮件

该插件可以处理所有这些问题,但在某些情况下Outlook get没有响应,并显示一个progressbar。有没有办法防止这种情况发生?(例如,保存这些电子邮件的另一种方式)

如果没有,可能有人对如何“解决”此行为有想法(例如,当用户“使用”Outlook时停止保存)


*编辑此操作在.NET 4中进行,并且必须与Outlook 2007和Outlook 2010兼容。

您可以定义一个将异步运行该方法的委托。 这意味着(可能)长时间运行的
SaveAs(filepath)
将不会阻止UI并导致Outlook显示进度条/对用户输入没有响应

这里可以找到这种异步编码风格的一个非常好的简单示例


这是官方消息

您当前是否将电子邮件异步保存到磁盘?不,我没有。我只调用SaveAs(filepath);。我甚至不知道这是可能的。我似乎找不到任何关于异步save方法的信息,你能再告诉我一点吗?哦,你的意思是将SaveAs方法本身作为异步语句运行。我认为这不能解决我的问题。SaveAs方法已经在线程中被调用,问题是/似乎是Outlook的UI被SaveAs方法内部的某些东西“使用”。无论如何,我会试试看,即使它不能解决这个问题,它也有一些好处。是的,这是我能想到的最好的了。谷歌搜索了一下,似乎找不到任何公开的C#等待的方法或任何东西。让我知道你进展如何!