C# 为什么我关闭窗体后,端口却还开着,程序还在进程中

我自己写了个程序,开了4个端口用socket方法接收UDP数据,每个端口接收数据都单独用一个线程,关闭窗体里我把线程都关闭了,但是socket却想不到什么好的办法关闭,这样导致窗体关闭后程序还在运行,有没有什么办法将活动的Socket都关闭呢
我是在接收数据的线程中建的socket,
While(true)
{
socket1.receivefrom(......)
}
因为要一直接收数据,在这里不好关闭socket,
我将socket1.close()设在form.closing()事件里,但在这里却关闭不了socket,挺烦人的

Environment.Exit(0);
先把资源释放,然后关闭
这个基本上能解决大多数关闭问题

我的方法你用了吗?你用下吧
肯定能关闭的
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-06-21
this.Owner.Close(); //这个可有可无,可以把获取当前界面的所有界面都关闭
this.Close();
Application.Exit();

差不多下面2个就可以了吧,一般只要全部窗口和线程都关闭了,程序就不会运行了
第2个回答  2010-06-21
关闭的方法写的不对。

Application.Exit();

这样就可以了。我也碰到之前跟你类似的问题。这样就解决了

参考资料:http://www.yzyxmm.com

第3个回答  2010-06-21
窗体关闭的时候,设定进程也关闭啊
System.Windows.Forms.Application.Exit();本回答被提问者和网友采纳
第4个回答  2010-06-21
先关闭socket 再关闭线程 再退出程序。谨记这三个顺序。
相似回答