2

我正在开发一个 VSTO Outlook 插件,它正在将电子邮件上传到共享点文档库,但关键问题是,即使使用 BackGroundWorker,我也无法在上传过程中使用 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);

如果有人知道如何解决它,请在这方面快速帮助我。

4

1 回答 1

0

您可以尝试在上传实现上放置一个断点,然后在 Visual Studio 中打开线程窗口以验证它在哪个线程上运行。

如果它在正确的线程上运行,那么您应该检查您的进度报告逻辑是否锁定了 UI 线程(例如,事件可能触发得太频繁)。

最后,您可能会遇到问题,因为上传方法的实现是以某种方式直接访问 Outlook COM 对象。

于 2012-11-07T15:37:49.683 回答