C# 4.0 windows窗体应用程序中的后台工作线程问题

C# 4.0 windows窗体应用程序中的后台工作线程问题,c#-4.0,C# 4.0,我正在将一个报表从数据集导出到execel文件,我有很多报表,这会占用我很多时间,所以我尝试通过后台工作人员解决这个问题,因为我正在处理windows窗体应用程序,但新问题出现了,当开始执行报表时,我的窗体没有响应,我无法移动窗体或单击“停止”按钮(停止应用程序) 这是我的代码示例: #region x Report PrimaryReportsThreads++; ADIR_Parameters ADIR_Parms = ConfigManager.GetADIRParameters();

我正在将一个报表从数据集导出到execel文件,我有很多报表,这会占用我很多时间,所以我尝试通过后台工作人员解决这个问题,因为我正在处理windows窗体应用程序,但新问题出现了,当开始执行报表时,我的窗体没有响应,我无法移动窗体或单击“停止”按钮(停止应用程序)

这是我的代码示例:

#region x Report 

PrimaryReportsThreads++;
ADIR_Parameters ADIR_Parms = ConfigManager.GetADIRParameters();
BackgroundWorker ADIR_worker = new BackgroundWorker();
AllThreads.Add(ADIR_worker);
ADIR_worker.DoWork += new DoWorkEventHandler(ADIR_worker_DoWork);
ADIR_worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
ADIR_worker.RunWorkerAsync(ADIR_Parms);

#endregion
听起来像是COM问题。 也许你应该试着使用

帮助完整链接:


不要经常打电话给ReportProgress。你能说得更清楚吗?汉斯:)@HansPassant:我没有使用ReportProgress,这是一个示例,请查看更新的问题咨询我的水晶球,上面写着:“他在后台工作人员中使用Excel应用程序类。它是一个单线程COM对象,所有调用都在创建它的线程上运行。这可能是UI线程,所以他的UI仍然冻结。@HansPassant:所以为了解决这个问题,我不能使用COM对象?