c# winform服务端如何关闭某一个特定的子线程

我在服务端开启监听。每次有客户端连接到服务端时,服务端都会开启一个独立线程与其通信。

#region 启动相应的与客户端通信的线程
clientThread = new Thread(new ParameterizedThreadStart(Receive_Process));
clientThread.Start();
#endregion

--------------------------------------------------------------------------------------------------

然后很多用户连接后,就开启了很多这样的子线程

问题是:当某一个用户退出时(或者我手动断开某一个用户时),服务端如何关闭与那一个用户相对应的线程?

第1个回答  2010-07-27
把线程放到集合里
需要关闭时,取出关闭即可
第2个回答  2010-07-27
托管线程或者是后台线程,或者是前台线程。后台线程不会使托管执行环境处于活动状态,除此之外,后台线程与前台线程是一样的。一旦所有前台线程在托管进程(其中 .exe 文件是托管程序集)中被停止,系统将停止所有后台线程并关闭。通过设置 Thread.IsBackground 属性,可以将一个线程指定为后台线程或前台线程。例如,通过将 Thread.IsBackground 设置为 true,就可以将线程指定为后台线程。同样,通过将 IsBackground 设置为 false,就可以将线程指定为前台线程。从非托管代码进入托管执行环境的所有线程都被标记为后台线程。通过创建并启动新的 Thread 对象而生成的所有线程都是前台线程。如果要创建希望用来侦听某些活动(如套接字连接)的前台线程,则应将 Thread.IsBackground 设置为 true,以便进程可以终止。

一个线程或者是后台线程或者是前台线程。后台线程与前台线程类似,区别是后台线程不会阻止进程终止。一旦属于某一进程的所有前台线程都终止,公共语言运行库就会通过对任何仍然处于活动状态的后台线程调用 Abort 来结束该进程。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/iorikyo/archive/2007/03/20/1534439.aspx

参考资料:http://blog.csdn.net/qiao000_000/archive/2009/12/15/5014266.aspx

本回答被提问者采纳
第3个回答  2010-07-27
try
{ }
catch
{ }
finally
{ }
相似回答