后台工作线程异常

本文关键字:异常 线程 工作 后台 | 更新日期: 2023-09-27 18:13:22

我在我的应用程序中使用后台工作者。在我生成报告之前,后台工作人员没有问题。生成devexpress报告后,如果我想保存文档,会出现以下错误:

"当前线程必须设置为单线程公寓(STA)模式之前需要OLE。请确保您有[STAThreadAttribute]你的主要功能。"

我尝试清除/obj/中的ddl,但它不工作。

我的主代码是:
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new FrmUxLogin());            
    }

我的backgrounfworker代码是(它不是一个WinForm,它是一个类):

 public bool GoalReport(string val, string goalid)
    {            
        try
        {
            worker.WorkerReportsProgress = true;
            worker.DoWork += (obj, args) =>
            {
                //Performing calculations and generating report
            };
            worker.ProgressChanged += (obj, args) =>
                {
                    MDIMain objMain = Application.OpenForms["MDIMain"] as MDIMain;                       
                };
            worker.RunWorkerAsync();
        }
        catch(Exception)
        {
        }
     }
**My code for report generation is**
private void CreateSummaryGoalReportTables(DataTable dtcurrent, DataTable dtportfolio, DataTable achieveTargetPropbabilty)
    {// after clicking export on devexpress the exception occured here
    }<==ThreadStateException

报告也正在生成,但我无法导出报告。devexpress提供了内置函数来保存报告。我没有为报告导出编码。请帮助! !提前感谢

后台工作线程异常

没有办法将后台worker设置为STA模式。你应该从ui线程调用save操作。尝试添加onComplete处理程序并在其中调用save。

这篇文章展示了如何正确编写完整的处理程序:http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.runworkercompleted.aspx