var
bCancel: boolean;procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
for i := 0 to 100000 do
if not bCancel then
begin
Caption := IntToStr(i);
Application.ProcessMessages;
end
else begin
bCancel := false;
break;
end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
bCancel := true;
end;
bCancel: boolean;procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
for i := 0 to 100000 do
if not bCancel then
begin
Caption := IntToStr(i);
Application.ProcessMessages;
end
else begin
bCancel := false;
break;
end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
bCancel := true;
end;
begin
A;
Application.ProcessMessage;
B;
end;如果是其它信号,如Event := TSimpleEvent.Create;
则WaitFor函数
//参数忘了
//Single参数
begin
Socket有信号来,Read, Write, Close,
用winsock.select判断
end;
//TimeOut
begin
timeout...看你怎么做了。
end;
//上面的代码不行的话,那这样。
var
Event: THandle;
begin
if not SConnect.LockWinsock2 then
raise Exception.Create('winsock2 dll not exists.');
Event := WSACreateEvent; //Create NetWork Event;
WSAEventSelect(ClientSocket1.Socket.Socket.Handle, Event, FD_READ or FD_CLOSE); //参数不知少了没:)
case WaitForSingleObject(Event, 100000) of
...//跟上面的一样了。
//finally
WSACloseEvent(Event); // Free Event.
end;
我现在写了event:=WSACreateEvent;调试的时候他报:WSACreateEvent is Undeclared.我应该如何声明呀?谢谢!马上给你加分!
//不是
//case WaitForSingleObject(Event, 100000) of
case MsgWaitForSingleObject(Event, 100000) of
我东忘西忘的,呵呵。