c#Progressbar没有backgroundworker

时间:2014-07-09 16:31:27

标签: c# office-interop

我正在使用COM-automation将数据写出到已经打开的Word文档。

由于此操作需要很长时间,因此我想向用户显示进度条。

无法在后台工作程序中执行数据写入操作,因为即使实现了MessageFilter,这也会导致Word应用程序抛出异常rpc_e_servercall_retrylater。我已经知道这是由于Words前台线程与后台线程沟通有困难。

是否可以反过来转而使用新线程来显示进度条?我试图打开一个新的winform,里面只有进度条,并在它自己的线程上打开它,但它没有更新。

其他想法?

1 个答案:

答案 0 :(得分:0)

这里有一段我​​希望可以帮助你的小片

 private void BackgroundWorker2_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
   string S = Convert.ToString(e.UserState);
   Label1.Text = S;
   ProgressBar1.PerformStep();
   S = null;
}




 Private Sub BackgroundWorker2_ProgressChanged(sender As Object, e As ProgressChangedEventArgs) Handles BackgroundWorker2.ProgressChanged
    Dim S As String = CType(e.UserState, String)
    Label1.Text = S
    ProgressBar1.PerformStep()
    S = Nothing
End Sub