Как использовать WSAAsyncSelect из WinAPI в C #? - PullRequest
0 голосов
/ 18 апреля 2009

Я устал от .NET BeginRead, EndRead и прочее. Мне бы хотелось использовать WSAAsync. Выберите способ, которым я пользовался в Delphi / C ++

.
//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 Ответ

1 голос
/ 20 апреля 2009

Если я правильно понимаю, вы можете использовать SocketAsyncEventArgs в том же порядке.

...