Zatrzymanie pracującego wątku, czekając na ostatni przebieg pętli.

0

Mam następujący problem i nie wiem jak go rozwiązać, tak aby było dobrze (ładnie).
Jest funkcja pracująca w osobnym wątku:

void WorkingMethod()
{
        while(true)
        {
                // ...
                // ...
                SendFile();
                // ...

                // Tu chcę zatrzymać działanie.
        }
}

I główny wątek programu, który na calu ma zatrzymać powyższą funkcję, ale dopiero po wysłaniu w niej pliku, po wykonaniu aktualnego loopa(to zajmie trochę czasu). I w tak przedstawionym problemie wystarczyłaby flaga STOP, ale chcę aby w tym miejscu, w głównym wątku, poczekać jeszcze z wykonywaniem dalszego kodu, do czasu, aż zatrzymanie faktycznie będzie miało miejsce.

// ...
// ...

// Stop WorkingMethod, czekając na jej faktyczny stop, wysłanie pliku. NIE poprzez ustawienie flagi STOP i kontynuowanie tego tu kodu.

// Ten kod ma się wykonać dopiero gdy WorkingMethod autentycznie zostanie zatrzymany.
// ...

Proszę o pomoc w prawidłowym rozwiązaniu problemu.

1

W wątku wyrzuć pętlę, bo z tego co do tej pory pokazałeś nie jest ona potrzebna. Ewentualnie zatrzymaj ją przez break. Jeżeli metoda skończy się wywoływać to wątek też się wtedy automatycznie zakończy. Tam, gdzie chcesz na ten koniec wątku poczekać, użyj na nim metody Join.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.