Szybkie i bezpieczne zamykanie wątku i aplikacji

0

Hej!

Otworzyłem wątek poboczny w mojej aplikacji. W pewnym momencie chcę jak najszybciej zamknąć całą aplikację (łącznie z wątkiem) z poziomu wątku...jak to zrobić szybko i bezpiecznie dla systemu? Ważne jest, aby było to bezpieczne na wszystkich wersjach Windows od 95 począwszy :-)

0

w watpku odwolujesz sie do procedurki w watku glownym ktory zayka watek i aplikacje (terminate)

0

w wątku sprawdzasz warunek application.terminated; jeśli spełniony, wtedy kończysz działanie wątku.

0

w wątku sprawdzasz warunek application.terminated; jeśli spełniony, wtedy kończysz działanie wątku.

moze sie myle....
jesli w watku zakonczymy watek to juz sie nic wiecej nie wykona pozniej... a autor chyba chcial jeszcze zamknac caly program....
a jesli application jest terminated to juz sie skonczyl... a watek zostanie nadal.... kurde, sam sie juz pogubilem [glowa]

// nie obraź się, ale jak nie znasz się na temacie, to się na jego temat nie wypowiadaj :> - ŁF

0

z poziomu wątku pobocznego wyślij komunikat do wątku programu, żeby zakończył wątek poboczny, a następnie siebie.

0

jesli w watku zakonczymy watek to juz sie nic wiecej nie wykona pozniej...
kurde, sam sie juz pogubilem [glowa]

no coś tak jakby rzeczywiście się pogubiłeś. przecież terminate <> terminated, więc kto mówi o kończeniu z wątku aplikacji?

ale to co podałem z application.terminated jest rzeczywiście błędne; ta funkcja służy do sprawdzania w trakcie intensywnych obliczeń, czy ktoś aby nie chce zamknąć programu - ale te obliczenia są przeprowadzane w wątku głównym.
zrób to czymś w rodzaju semafora:
masz zmienną semafor : byte = 0;

wątek kończysz, kiedy semafor = 1, ale przed zakończeniem wątku robisz semafor := 0; jednocześnie w głównym kodzie programu robisz semafor := 1 i czekasz, aż semafor = 0; pseudokod:

wątek:

while semafor = 0 do obliczenia;
semafor := 0;

program:
obsługa OnClose:

semafor := 1;
while semafor = 1 do sleep(10);
application.terminate;
0

Hej!

Dzięki za wszystkie odpowiedzi. Będę kombinował...jak się nie uda to napiszę :-)

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