回 帖 发 新 帖 刷新版面

主题:网络编程的问题!

用TcpListener和TcpClient编程,在关闭窗口后,服务器/客户端的.exe进程仍然存在于windows的任务管理器进程中,但是在编程的时候有如下的语句呀!如何解决?
private void Form1_Closed(object sender, System.EventArgs e)
        {
            ss.Close();           //TcpClient对象
            _thread1.Abort ();    //线程
            listener.Stop();      //TcpListener对象
            ns.Close();           //NetworkStream对象
        }

回复列表 (共3个回复)

沙发

服务器/客户端的.exe进程仍然存在于windows的任务管理器进程中

这个好像以前也有人问起过。套接字是非托管资源,所以必须手动释放,而且涉及到多线程,需要确认每个线程的资源是否都释放了。而且你说关闭窗口,是子窗口吧?你的线程是在哪个进程启动的呢?

板凳

由于只用了一个线程,所以能保证线程已经关闭了,而且是在有且仅有的一个进程中调用了一个线程,楼主所说的手动释放资源是什么意思?难道每次都要手动从资源管理器里结束进程?
由于只编了一个窗口,所以关闭窗口就只的是这个有且仅有的窗口!

3 楼

好像每碰到过这样的问题。ss.Dispose();

我来回复

您尚未登录,请登录后再回复。点此登录或注册