Jeśli chcę, aby okresowo sprawdzać, czy istnieje żądanie anulowania, chciałbym użyć następującego kodu poniżej stale w moim DoWork obsługi zdarzenia:Czy istnieje czysty sposób sprawdzania żądania anulowania w BackgroundWorker bez ponownego wpisywania tego samego kodu w kółko?
if(w.CancellationPending == true)
{
e.Cancel = true;
return;
}
Czy istnieje czysty sposób na sprawdzenie żądania rezygnacji na BackgroundWorker
w C# bez ponownego wpisywania tego samego kodu w kółko?
Proszę odnieść się do poniższego kodu poniżej:
void worker_DoWork(object sender, DoWorkEventArgs e)
{
...
BackgroundWorker w = sender as BackgroundWorker;
if(w.CancellationPending == true)
{
e.Cancel = true;
return;
}
some_time_consuming_task...
if(w.CancellationPending == true)
{
e.Cancel = true;
return;
}
another_time_consuming_task...
if(w.CancellationPending == true)
{
e.Cancel = true;
return;
}
...
}
Być może dokonać pracownik maszyna stan wtedy można po prostu zrobić 'while (w.CancellationPending!) {Switch (_someSwitch) ...} ' – MickyD
Podziel metodę na delegatów. Powiedzmy "Akcja []", następnie przejdźmy do 'Akcje' wewnątrz pętli sprawdź' if (w.CancellationPending) {e.Cancel = true; return;} ' –
Dla jednego wyodrębnij to do metody pomocnika. – usr