我创建了Backgroundworker以在使用不同类提供的一些方法的串行端口上操作。每次发生这些方法的异常时,我想取消一名工作人员。如何从方法代码的某些部分取消背景工作
事实上,我有一些想法如何使用事件做到这一点,但恐怕这不是最佳解决方案或良好做法。在这种情况下,我应该用每种方法开火,这在我看来效率不高。 。
对于离,一个从方法,ReceiveRecord
看起来像这样:
public string ReceiveRecord()
{
try
{
var receivedLine = _serial.ReadLine();
return receivedLine;
}
catch (TimeoutException exception)
{
MessageBox.Show($"Error was occured: \r\n {exception.Message}", "Timeout error",
MessageBoxButton.OK, MessageBoxImage.Error);
// HERE i want to fire worker cancellation
}
return String.Empty;
}
工人调用方法定期。
我认为返回false,当错误发生时,但我没有任何想法,如何做到这一点,如果方法返回string
...
是否有从着火的DoWork取消任何简单的方法代码片段?
您可以用'出bool'参数也可以在例外的情况下,返回null或抛出异常给调用者和尝试捕捉检查有没有取消它的 –
可能重复【如何正确地停止的BackgroundWorker( https://stackoverflow.com/questions/4732737/how-to-stop-backgroundworker-correctly) – oRole