处理工作线程错误和结果?

时间:2014-12-03 11:19:06

标签: c# multithreading error-handling backgroundworker

我有一个应用程序可以处理工作线程中的一些工作。在dowork函数中我调用DAL函数。根据DAL结果(成功或失败)我会更进一步。下面是我想要实现的示例代码。

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;
}

1 个答案:

答案 0 :(得分:1)

您似乎没有在e.Result方法中分配backgroundWorker_DoWork

应该是这样的:

void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
    e.Result = GetResult(10,5);
}

然后,如果出现错误(例如,GetResult(10, 0)),则e.Error中的异常文本会生成e.Result,否则就会产生backgroundWorker_RunWorkerCompleted - 就像您期望{ {1}}方法。