WSAEventSelect(ClientSocket1.Socket.SocketHandle, Event, FD_READ or FD_CLOSE); //参数不知少了没:)
//不是
//case WaitForSingleObject(Event, 100000) of
case MsgWaitForSingleObject(Event, 100000) of
case WaitForSingleObject(ClientSocket1.Socket.SocketHandle, 100000) of
//参数忘了
//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
...//跟上面的一样了。
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;