Brak możliwości zamknięcia aplikacji z uruchomionym wątkiem

0

Witam, napisałem aplikację która po uruchomieniu ma wykonać kilku skrótów klawiszy, a następnie sama się zamknąć.
Wykonanie skrótów wrzuciłem do wątku, bo w innym wypadku cała aplikacja się przycinała. Teraz wszystko działa jak należy, jednak wykonanie Application.Terminate; nie zamyka aplikacji. Próbowałem również z Application.Free;, wtedy okno aplikacji znika, jednak aplikacja wciąż znajduję się w procesach.

W jaki sposób poprawnie wyłączyć tę aplikację?

0

Zatrzymaj najpierw wątki.

0

Podejrzewałem, że to trzeba najpierw zrobić, jednak szukałem na Google i nadal nie wiem jak.

Wątek jest uruchamiany poprzez: Twatek.Create(false); dodanie Twatek.Create(true); niczego nie zmienia.

0

Niestety, zwraca taki błąd:
//
[Error] Unit1.pas(80): This form of method call only allowed for class methods//

0

W jaki sposób to ustawić? Jeśli chodzi o Delphi to jestem na prawdę początkujący.

0

Spakuj swój projekt i wrzuć go tutaj, zobaczymy co jest nie tak ;)

0

jeśli jesteś na prawdę początkujący to nie bierz się za wątki tylko zacznij od podstaw!

0

• pokaż trochę kodu. wątek powinien mieć pętlę „while not Terminated”.
• nie należy ubijać wątków na siłę, tylko powiadomić je, by się zamknęły od wewnątrz. do tego służy metoda .Terminate(), która wbrew nazwie jedynie ustawia wątkowi pole Terminated na true (w tym momencie wyżej wymieniona pętla się zakończy). potem czekaj aż wątek sam się zakończy przy pomocy .WaitFor().
• jeśli wątek jest zblokowany (czeka na coś potencjalnie nieskończenie długo) to sprawa się komplikuje.

0
procedure TWatek.Execute;
begin
 {Zwolnienie wątku po zakończeniu}
 Watek.FreeOnTerminate;

 //operacje
end;
0

W wątku w tych pętlach co tam masz możesz dodać coś takiego:
if Application.Terminated then
Exit;

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