Anulowanie wykonywania wątku(Backgroundworker)

0

Button "wyslij" uruchamia okno postępu wątku i w tym czasie wątek wysyłający meila. (w DoWork metoda Send()).
Na tym wyskakującym okienku jest przycisk anuluj.
Za żadne skarby wątek nie chce się przerwać dopóki nie wykona wysyłania. Wyświetla najpierw powiadomienie o wysłaniu, dopiero potem o anulowaniu (oczywiście meil dochodzi chociaż nie powinien).
Próbowałem już:

bw_DoWork(object sender, DoWorkEventArgs e){
 while(!bw.CancellationPending) Send();
} 

jednak i to nie działało a może gdzieś popełniam błąd.
Będę wdzięczny za wszelkie podpowiedzi.

0

przecież sprawdzasz, czy wątek ma być zakończony NA ZEWNĄTRZ metody Send(). jak to sobie wyobrażasz, że metoda Send() się zakończy na podstawie warunku w innym miejscu kodu? taka opcja tylko w przypadku zabicia wątku (Abort), co akurat w przypadku background workera jest awykonalne. dodaj sprawdzanie CancellationPending wewnątrz Send().

0

Wydaje mi się ,że mam problem z przekazaniem wartości. Potrzebowałbym pewnie czegoś nieeleganckiego i pewnie zostanę zbesztany a'la globalny obiekt. Czy do tego wykorzystuje się singletony? Jeśli tak to można to zrobić z backgroundworker'em? Jak mniej więcej by to wyglądało? A może coś innego?

1 użytkowników online, w tym zalogowanych: 0, gości: 1