如何在C#中使用WinAPI中的WSAAsyncSelect?

时间:2009-04-18 10:17:10

标签: c# winapi callback winsock wsaasyncselect

我厌倦了.NET BeginRead,EndRead的东西。我喜欢用我在Delphi / C ++中的方式使用WSAAsyncSelect

//Async CallBack handler Declaration
procedure MessageHandler(var Msg:Tmessage);Message WM_WINSOCK_ASYNC_MSG;

//Where i setup the Async
dwError := WSAAsyncSelect(Sock, form1.handle, WM_WINSOCK_ASYNC_MSG, FD_CLOSE or FD_READ);

//Async Callback Handler
procedure Tform1.MessageHandler(var Msg:Tmessage);
begin
  case WSAGetSelectEvent(MSG.LParam) of //LParam is FD_READ/FR_CLOSE/FD_WRITE
    FD_READ: OnSocketRead(MSG.WParam); //WPARAM is the Socket itself.
    FD_CLOSE: OnSocketClose(MSG.WParam);
  end;
end;

是否可以在C#中设置该事件?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您可以使用相同模式的SocketAsyncEventArgs