multithreading - C# TcpListener.BeginAccept and ObjectDisposedException -
i encounter ugly socket management pattern in c# have catch exception when want stop or close socket...
i handle sockets objectdisposedexception don't pop!
i wondering if code ok
private tcplistener server; private bool listening; private void initialize() { this.listening = true; this.server = new tcplistener(ip, port); this.server.beginaccepttcpclient(this.acceptsocket, null); } private void acceptsocket(iasyncresult result) { if (listening) this.server.endaccepttcplistener(result); else ; //nothing or maybe cleaning if necessary? } private void stoplistening() { this.listening = false; this.server.stop(); } as may know, stop method trigger asynccallback "acceptsocket" while underlying socket closed objectdisposedexception thrown if endaccepttcplistener called... here, endaccepttcplistener never called if callback triggered tcplistener.stop!
so, know happens if don't call endaccepttcplistener since msdn says must don't want ugly exception if can prevent it!
if it's required endaccept know if have solution manage socket stop , close avoid stupid exception!!
Comments
Post a Comment