Mam stylistyczne pytanie dotyczące wyboru implementacji wątku w tle, którego powinienem użyć w aplikacji formularza Windows. Obecnie mam BackgroundWorker
na formularzu, który ma nieskończoną (while(true))
pętlę. W tej pętli używam WaitHandle.WaitAny
drzemki wątku, dopóki nie wydarzy się coś interesującego. Jeden z uchwytów zdarzenia, na które czekam, to „ StopThread
” zdarzenie, dzięki czemu mogę wyrwać się z pętli. To zdarzenie jest sygnalizowane, gdy z mojego zastąpienia Form.Dispose()
.
Czytałem gdzieś, które BackgroundWorker
jest naprawdę przeznaczone do operacji, z którymi nie chcesz wiązać interfejsu użytkownika i które mają skończony koniec - jak pobieranie pliku lub przetwarzanie sekwencji elementów. W tym przypadku „koniec” jest nieznany i tylko wtedy, gdy okno jest zamknięte. Czy zatem bardziej odpowiednie byłoby dla mnie użycie wątku w tle zamiast BackgroundWorker
do tego celu?