BackGroundWorker无法在VSTO Outlook中工作
问题描述:
我正在处理一个将电子邮件上传到SharePoint文档库的VSTO Outlook插件,但关键问题是即使使用BackGroundWorker我也无法在上传过程中使用Outlook。BackGroundWorker无法在VSTO Outlook中工作
代码如下。
System.Threading.SynchronizationContext.SetSynchronizationContext(new WindowsFormsSynchronizationContext());
bw = new BackgroundWorker();
bw.WorkerReportsProgress = true;
bw.DoWork += delegate(object sender, DoWorkEventArgs e)
{
bw_DoWork(sender, e, uploadData);
};
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
如果有人知道如何解决它,请帮助我快速在这方面。
答
您可以尝试在您的上传实施中放置断点,并在Visual Studio中打开线程窗口以验证它正在运行的线程。
如果它正在正确的线程上运行,那么应该检查您的进度报告逻辑是否锁定了UI线程(例如该事件可能会频繁发生)。
最后,您可能遇到问题,因为上传方法的实现以某种方式直接访问Outlook COM对象。