[PR] Watki TThread

0

czesc
pare pytan odnosnie watkow:
gry zrobie

TWatek.Execute
begin
freeeOnterminate:=TRUE;
MojaProcedura;
end;

var watek:TWatek

watek:=TWatek.Create(FALSE);

To watek jest automatycznie niszczony po wykonaniu MojaProcedura
i mozna dio zmiennej watek przypisac nowy?
Czy tez trzeba wczesniej odpalic procedury w stylu DoTerminate;

Jak niszczyc Watek, w pomocy pisza ze nalezy unikac Destroy (D5)?

Ogólnie chodzi o to by w programie był na żadanie ( dosyc czesto) uruchamiany ten sam watek ale juz z nowymi danymi do przetrawienia i chodzi o to by nie zostawic jakis smieci bo zawsze ma byc TYLKO jeden watek uruchomiony, a ewentualny wczesniejszy ma byc niszczony.

Dzieki za kazda pomoc

0

watek.FreeOnTerminate := True;

0

jesli napiszesz w Execute: FreeOnTerminate:=true;
nie muszisz sie martwic o zwalnianie pamieci przydzielonej watkowi.
Do niszczenia, wylaczania watkow sluzy polecenie Termiante np:

var Watek: TWatek;

procedure TMainForm.Start;
begin
Watek:=TWatek.Create(false); //od razu "rurchamiamy" watek (false)
...
end;

procedure TMainForm.End;
begin
Watek.Termiante; //tutaj nastepuje wylaczenie watku i ewentualnie
// zwolnienie pamieci (patrz poczatek)
end;

...teraz mozesz znow bez obaw wykorzystac zmienna Watek.
Jesli odwolujesz sie do metod obiektow spoza watku nie zapominj o uzyciu Synchronize - zawsze pewniej

0

OK dzieki za pomoc

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