Miten säikeitä käytetään Pascal:ssa. Mitä asioita pitää ottaa huomioon.
Moniajo
1
231
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
Vihamielisyys naisia kohtaan on jo yllättävän suuri ongelma
Esiintyy laajemmassa mittakaavassa, mitä vain tällä palstalla. Mistä tuo ilmiö nyt oikein johtuu, ja saa alkuvoimansa?3221822Olen melko vakuuttunut
etten tule olemaan koskaan täysin onnellinen ilman sinua. En uskonut, että näin kävisi kenenkään kanssa. Kunnes sain kok831287Odotan sitä hetkeä
kun nähdään taas. Tiedän, että sinäkin odotat. Kun se päivä koittaa, katseesi hakee minua. Ehkä arkailemme toisiamme väh751284- 1341157
- 79947
- 85881
- 48843
Postimerkki kirjeeseen ja kortiin maksaa jo 3 euroa!
https://yle.fi/a/74-20229241 Kyllä tämä on järjetön hinta, Posti tuhoaa itsensä tällä hinnalla, täytyyhän Postin "Herro118804- 48780
Sitä saattaa vähän hölmöillä
rakkauspäissään, jos tunteita on enemmän kuin osaa käsitellä. Alkuhölmöilyt on söpöä ja sallittavaa.60736