Hvordan laver man en "Thread"

Tags:    delphi

Hej

Jeg er igang med at lave et program til min com port men nu står jeg med et lille problem.. Er der en måde hvorpå jeg kan læse fra porten hvis der kommer noget nyt data til mit program? Det skal nok være uden timer for hvis den køre hele tiden fryser man jo programmet? Så regner med at det har noget at gøre med Thread..

Her er min kode:

Fold kodeboks ind/udKode 


SkypeR - Out..



6 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Tthread classen kan bruges til threads. men ellers findes der en unit der hedder TthreadEX som kan findes på nettet som viser hvordan man lettest bruger threads.
Dog kan jeg udfra din kode se at du let kan bruge enten timers eller bare lave dit eget kunstige delay imellem check af porten uden at hænge dit program.

procedure DELAY(ms : longint);
var
TheTime : LongInt;
begin
TheTime := GetTickCount + ms;

while GetTickCount < TheTime do
Application.ProcessMessages;
end;

Eksempel.
DELAY(10000);

Venter 10 sekunder unden at hænge applikations interface




Tthread classen kan bruges til threads. men ellers findes der en unit der hedder TthreadEX som kan findes på nettet som viser hvordan man lettest bruger threads.
Dog kan jeg udfra din kode se at du let kan bruge enten timers eller bare lave dit eget kunstige delay imellem check af porten uden at hænge dit program.

procedure DELAY(ms : longint);
var
TheTime : LongInt;
begin
TheTime := GetTickCount + ms;

while GetTickCount < TheTime do
Application.ProcessMessages;
end;

Eksempel.
DELAY(10000);

Venter 10 sekunder unden at hænge applikations interface


Det var da egentlig en fed idé den vil jeg da lige teste :D


SkypeR - Out..



Tthread classen kan bruges til threads. men ellers findes der en unit der hedder TthreadEX som kan findes på nettet som viser hvordan man lettest bruger threads.
Dog kan jeg udfra din kode se at du let kan bruge enten timers eller bare lave dit eget kunstige delay imellem check af porten uden at hænge dit program.

procedure DELAY(ms : longint);
var
TheTime : LongInt;
begin
TheTime := GetTickCount + ms;

while GetTickCount < TheTime do
Application.ProcessMessages;
end;

Eksempel.
DELAY(10000);

Venter 10 sekunder unden at hænge applikations interface


Det var da egentlig en fed idé den vil jeg da lige teste :D


SkypeR - Out..


Tak skaldu have.. Det hjalp

SkypeR - Out..



Var så lidt :)



Application.ProcessMessages;

Er faktisk årsagen til at programmet ikke fryser, ikke fordi den holder en pause på x antal ms.

// Thomas Bresson



Application.ProcessMessages;

Er faktisk årsagen til at programmet ikke fryser, ikke fordi den holder en pause på x antal ms.

// Thomas Bresson


Jammen jeg syntes aligevel at mit program fryser lidt når den køre? hvordan kan det være?

SkypeR - Out..



t