我有一个应用程序可以处理工作线程中的一些工作。在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;
}
答案 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}}方法。