代码如下:
private void Receive()
{
while( true )
{
try
{
allDone.Reset();
this.localSocket.BeginReceiveFrom( this.bBuffer,0,this.bBuffer.Length,SocketFlags.None,ref this.remoteIP,new AsyncCallback( this.ReceiveCallback ),this.localSocket );
allDone.WaitOne();
}
catch{}
}
}
private void ReceiveCallback( IAsyncResult iar )
{
try
{
allDone.Set();
this.nReceiveDataLength = this.localSocket.EndReceiveFrom( iar, ref this.remoteIP );
if( this.nReceiveDataLength > 0 )
{
byte[] bReceive = new byte[ this.nReceiveDataLength ];
Buffer.BlockCopy( this.bBuffer,0,bReceive,0,this.nReceiveDataLength );
//触发接收完成事件
this.OnReceiveDataComplete( new SocketReceiveEventArgs( bReceive,this.remoteIP ) );
}
}
catch{}
}
在对象A中声明此SOCKET对象,并用线程B执行Receive,现在需要在应用程序退出时,结束此SOCKET,但终止线程B后,此SOCKET对象的异步接收仍然存在,