Miten säikeitä käytetään Pascal:ssa. Mitä asioita pitää ottaa huomioon.
Moniajo
1
148
Vastaukset
- Kukame
// esitellään jossain meidän oma säieluokka
Type
TMyThread = class(TThread)
public
data: String;
procedure Execute: Override;
end;
procedure TMyThread.Execute;
var
idx: Integer;
begin
// tämä funktio ajetaan omassa säikeessä. Täältä ei saa päivittää
// lomakkeen VCL komponentteja suoraan koska saattaa tulla
// konflikti MainUI säikeen kanssa.
for idx:=0 to to 10 do begin
sleep(1000); // esimerkissä nukutaan jonkin aikaa
end;
end;
- - - - -
// käytetään säiettä vaikka päälomakkeella
procedure TFrmMain.ThreadTerminated(Sender: TObject);
var
data: String;
begin
// säie lopettanut elämänsä, luetaan siitä lopputulos tai
// mitä ohjelma haluaakin tehdä. Tätä kutsutaan MainUI
// säikeessä joten on turvallista päivittää vaikka
// formien VCL komponenttien tilatietoja.
data := (Sender as TMyThread).data;
end;
procedure TFrmMain.btnStartThread(Sender: TObject);
var
thr1: TMyThread;
begin
// luo instanssi mutta älä käynnistä(suspended=true) automaattisesti.
// instanssin konstruktoria (free) kutsutaan automaattisesti kun
// säikeen elinkaari päättyy. Ennen destruktoria kutsutaan ThreadTerminated
// funktiota jossa voidaan tehdä lopputemput.
thr1 := TMyThread.Create(true);
thr1.freeOnTerminate := true;
thr1.onTerminate := ThreadTerminated;
thr1.Resume; // käynnistää säikeen
// eli meidän ei tarvitse eikä saa kutsua täällä thr1.Free funktiota koska
// järjestelmä poistaa sen automaattisesti. Jätetään se pyörimään taustalle.
end;
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
- 304176
Vain vasemmistolaiset rakennemuutokset pelastavat Suomen
Kansaa on ankeutettu viimeiset 30+ vuotta porvarillisella minäminä-talouspolitiikalla, jossa tavalliselta kansalta on ot1344017- 583624
Purra on kantanut vastuuta täyden kympin arvoisesti
Luottoluokituksen lasku, ennätysvelat ja ennätystyöttömyys siitä muutamana esimerkkinä. Jatkakoon hän hyvin aloittamaans223463- 793437
Persut huutaa taas: "kato! muslimi!"
Persut on lyhyessä ajassa ajaneet läpi kaksi työntekijöiden oikeuksien heikennystä, joita se on aiemmin vastustanut. Pe643301- 812866
- 542795
- 202544
Korjaamo suositus
Vahva suositus Kumpulaisen korjaamolle vanhan 5-tien varrelta! Homma pelaa ja palvelu ykköslaatuista. Mukavaa kun tuli p142274