Naturally, BeginReceive()
will never end if there\'s no data.
MSDN suggests that calling Close()
would abort BeginReceive()
.
I was struggling with this as well but as far as I can tell using a simple boolean flag before calling .BeginReceive()
will work as well (so there'll be no need for exception handling). Since I already had start/stop handling, this fix was a matter of one if
statement (scroll down to the bottom of the OnReceive()
method).
if (_running)
{
_mainSocket.BeginReceive(_data, 0, _data.Length, SocketFlags.None, OnReceive, null);
}
Should I have overlooked something with this approach, let me know!