다른 클래스에서 제공하는 일부 메소드를 사용하는 직렬 포트에서 작동하는 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;
}
노동자가 그 방법을 주기적으로 호출합니다.
는 캐치에서 취소를 DoWork 발사 할 수있는 간단한 방법이 있습니까 ... 나는 오류가 발생하면 false를 반환 고려,하지만 난 방법을string
을 반환하는 경우 어떤 생각이 어떻게 그것을 할 필요가 없습니다 코드 조각?
당신은'사용 밖으로 bool' 매개 변수 또는 예외의 경우 null을 반환하거나 다시 호출자에게 예외를 던져 그것을의 –
가능한 중복을 취소하려고 캐치 거기 확인할 수 있습니다 [제대로 BackgroundWorker에 정지하는 방법 (https://stackoverflow.com/questions/4732737/how-to-stop-backgroundworker-correctly) – oRole