C# 处理工作线程错误和结果?
我有一个在工作线程中处理一些工作的应用程序。在dowork函数中,我调用了一个DAL函数。根据DAL结果(成功或失败),我将更进一步。下面是我希望如何实现的示例代码C# 处理工作线程错误和结果?,c#,multithreading,error-handling,backgroundworker,C#,Multithreading,Error Handling,Backgroundworker,我有一个在工作线程中处理一些工作的应用程序。在dowork函数中,我调用了一个DAL函数。根据DAL结果(成功或失败),我将更进一步。下面是我希望如何实现的示例代码 MyFunction() { this.backgroundWorker = new BackgroundWorker(); this.backgroundWorker.DoWork += new DoWorkEventHandler(backgroundWorker_DoWork); this.backgr
MyFunction()
{
this.backgroundWorker = new BackgroundWorker();
this.backgroundWorker.DoWork += new DoWorkEventHandler(backgroundWorker_DoWork);
this.backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker_RunWorkerCompleted);
this.backgroundWorker.RunWorkerAsync();
}
void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if(e.Error!=null)
{
//operation fail
}
else if(e.Result!=null)
{
//operation succeed
}
}
void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
int result=GetResult(10,0);
int result2=GetResult(10,5);
}
int GetResult(int number1,int number2)
{
return a/b;
}
看起来您没有在
backgroundWorker\u DoWork
方法中分配e.Result
应该是这样的:
void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
e.Result = GetResult(10,5);
}
然后在出现错误的情况下(例如,通过
GetResult(10,0)
),它将是e.error
中的异常文本,并导致e.result
,否则-正如您在backgroundWorker\u RunWorkerCompleted
方法中所期望的那样。那么您的问题是什么?您是否面临一些问题,出现了一些问题?谢谢您的回复。我无法实现backgroundWorker\u Runworker Completed
我想使用do worker线程的结果。谢谢您的回复。我已经尝试过在dowork方法中没有选项e.error。您不需要在\u dowork
中设置e.error
。只需设置e.Result
。如果在执行过程中抛出异常,BackgroundWorker将自行设置e.Error
。