How to stop running async method
Hello,
I'm writting a server using async sockets. The server must listen for incoming data on multiple sockets. That means I have multiple calls to the
Socket.ReceiveAsync(). The problem arrises when I want to shutdown the server. How I can I stop these ReceiveAsync() methods before I close the sockets ?
If I just call the Close() function on a socket I get an exception:
Cannot access a disposed socket.
after Close() is executed. I can catch the exception but I think there should be a cleaner way to do this.
AlexPosted May 5, 2008, 9:24 AM
I've played a little and noticed that calling the Dispose method of the SocketAsyncEventArgs passed to the socket works. It goes something like this:
SocketAsyncEventArgs arg;
//code to set up arg
socket.ReceiveAsync(arg);
//do other stuff
arg.Dispose();
No exceptions are thrown and the sockets stop waiting for data. Is this ok ?
Posted May 2, 2008, 3:09 PM
AlexPosted May 2, 2008, 12:23 PM
Posted May 2, 2008, 3:08 AM