var
hThread:Thandle; //定义一个句柄
ThreadID:DWord;procedure TForm1.Timer3Timer(Sender: TObject);
begin
//创建线程,同时线程函数被调用
hthread:=CreateThread(nil,0,@MyThreadfunc,nil,0,ThreadID);
if hThread=0 then
messagebox(Handle,'Didn’t Create a Thread',nil,MB_OK);
end;function MyThreadFunc(P:pointer):Longint;stdcall;
var
DC:HDC;
S:string;
buffer : array[0..255] of char;
ret : integer;
i,j,msr_key,m,k: integer;
rec_txt,msr_flag,tirm_flag:string;
begin
begin
form1.IdUdpclient1.Send(form1.caption+'请求数据');
ret := form1.IdUdpClient1.ReceiveBuffer(buffer,255,3000);// 等待接收数据.
if ret > 0 then
begin
msr_flag:='0';
tirm_flag:='0';
form1.memo1.Text:='';
form1.memo1.Lines.add(buffer);
rec_txt:=form1.memo1.Text;
for k:=0 to form1.ListBox1.Items.Count-1 do
begin
if trim(copy(rec_txt,14,13))=form1.listbox1.Items[k] then
tirm_flag:='1';
end;
if tirm_flag='0' then
form1.listbox1.Items.Add(trim(copy(rec_txt,14,13)));
end;
end;
end;后来加上这个也不行
procedure TForm1.FormDestroy(Sender: TObject);
var
retCode: DWORD;
begin
if hThread <> 0 then
begin
While True Do
Begin
if not GetExitCodeThread(hThread,retCode) then
break;
If retCode <> STILL_ACTIVE Then
Break;
Application.ProcessMessages;
End;
end;
end;
为什么在关闭的时候出问题,请告诉我一下.
hThread:Thandle; //定义一个句柄
ThreadID:DWord;procedure TForm1.Timer3Timer(Sender: TObject);
begin
//创建线程,同时线程函数被调用
hthread:=CreateThread(nil,0,@MyThreadfunc,nil,0,ThreadID);
if hThread=0 then
messagebox(Handle,'Didn’t Create a Thread',nil,MB_OK);
end;function MyThreadFunc(P:pointer):Longint;stdcall;
var
DC:HDC;
S:string;
buffer : array[0..255] of char;
ret : integer;
i,j,msr_key,m,k: integer;
rec_txt,msr_flag,tirm_flag:string;
begin
begin
form1.IdUdpclient1.Send(form1.caption+'请求数据');
ret := form1.IdUdpClient1.ReceiveBuffer(buffer,255,3000);// 等待接收数据.
if ret > 0 then
begin
msr_flag:='0';
tirm_flag:='0';
form1.memo1.Text:='';
form1.memo1.Lines.add(buffer);
rec_txt:=form1.memo1.Text;
for k:=0 to form1.ListBox1.Items.Count-1 do
begin
if trim(copy(rec_txt,14,13))=form1.listbox1.Items[k] then
tirm_flag:='1';
end;
if tirm_flag='0' then
form1.listbox1.Items.Add(trim(copy(rec_txt,14,13)));
end;
end;
end;后来加上这个也不行
procedure TForm1.FormDestroy(Sender: TObject);
var
retCode: DWORD;
begin
if hThread <> 0 then
begin
While True Do
Begin
if not GetExitCodeThread(hThread,retCode) then
break;
If retCode <> STILL_ACTIVE Then
Break;
Application.ProcessMessages;
End;
end;
end;
为什么在关闭的时候出问题,请告诉我一下.
ExitThread 來結束線程!再說, 你這個線程, 裹面還要加
sleep(100); 這類的, 要不然, 太快了!處理有問題
function MyThreadFunc(P:pointer):Longint;stdcall;
var
i:integer;
DC:HDC;
S:string;
begin
DC:=GetDC(Form1.Handle);
for i:=0 to 100000 do begin
S:=Inttostr(i);
Textout(DC,10,10,Pchar(S),length(S));
end;
ReleaseDC(Form1.Handle,DC);
end;