【发布时间】:2018-06-02 20:47:16
【问题描述】:
我有一个后台工作人员(NET 3.5 和 Visual Studio 2008)来执行一些长时间的任务:
private void BWorker_DoWork(object sender, DoWorkEventArgs e)
{
string filename = GetFileName();
if (!string.IsNullOrEmpty(filename))
{
// Do long task
}
else
{
// Finish background worker with a custom error message
// in order to receive it in BWorker_RunWorkerCompleted and log it. Some kind of:
e.Error.Message = "my custom message error".
}
}
private void BWorker_ProcessChanged(object sender, ProgressChangedEventArgs e)
{
}
private void BWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Cancelled)
{
Logger.Process("Cancelled.");
}
else if (e.Error == null)
{
Logger.Process("Successfully completed");
}
else
{
// Log here my custom error
Logger.Error(string.Format("Completed with errors: {0}", e.Error.Message));
}
}
在长时间的任务中,我会检查很多事情,所以如果一个失败,我想根据情况“强制”后台工作人员完成一个自定义错误(如果有任何事情失败,则无需继续执行后台工作人员)。然后,此错误将打印到 BWorker_RunWorkerCompleted 中的日志中。
我该怎么做?
【问题讨论】:
标签: c# multithreading visual-studio-2008 .net-3.5 backgroundworker