Jestem nieco zdezorientowany, jak sobie poradzić z wyjątkiem.Obsługa wyjątków pracowników tła
Mam wątek pracownika tła, który uruchamia jakiś długotrwały proces. Rozumiem, że jeśli wystąpi wyjątek w wątku pracującym w tle, kod nadal będzie kończył się na metodzie RunWorkerCompleted.
void bgWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Error != null)
throw e.Error;
Jeśli jest to sprawa jest jakiś punkt w oddanie bloku try catch wokół bgWorker.RunWorkerAsync(); zadzwoń, nie zakładam?
Chcę ponownie rzucić wyjątek złapany w RunWorkerCompleted metoda, jak mogę to zrobić bez utraty śledzenia stosu - czy to, co mam powyżej poprawne? Czytałem, że podczas ponownego wyrzucania wyjątku powinieneś po prostu użyć "rzutu"?
więc w tym przypadku nie będę potrzebujesz wykonać jakąkolwiek obsługę błędów w mojej metodzie RunWorkerCompleted? A może lepszą praktyką jest radzenie sobie z błędami w metodzie RunWorkerCompleted? – mHelpMe
jeśli zajmiesz się wyjątkiem w wątku roboczym, nie będziesz mógł go pobrać w RunWorkerCompleted i jeśli nie będziesz go obsługiwał w DoWork, twoja aplikacja może ulec awarii, jeśli zrobisz coś źle –