【发布时间】:2011-09-18 07:23:42
【问题描述】:
使用 TcpClient 和 TcpListener 类进行实验,由于某种原因,当我有几个线程正在运行并且我关闭表单时,进程并没有结束,但表单消失了。
我必须使用 VS IDE 或任务管理器手动终止进程。
当我关闭程序但进程没有结束时,表单中的任何内容都没有运行。我在各处插入断点,甚至控制台输出都显示线程已退出。
有人知道这里发生了什么吗?
【问题讨论】:
标签: c# tcpclient tcplistener
使用 TcpClient 和 TcpListener 类进行实验,由于某种原因,当我有几个线程正在运行并且我关闭表单时,进程并没有结束,但表单消失了。
我必须使用 VS IDE 或任务管理器手动终止进程。
当我关闭程序但进程没有结束时,表单中的任何内容都没有运行。我在各处插入断点,甚至控制台输出都显示线程已退出。
有人知道这里发生了什么吗?
【问题讨论】:
标签: c# tcpclient tcplistener
您的应用程序的主线程正在等待您生成的线程完成。您可以将线程的IsBackground 属性设置为true,这样它们就不会阻止您的进程终止:
来自MSDN:
线程要么是后台线程,要么是前台线程。 后台线程与前台线程相同,除了 后台线程不会阻止进程终止。一旦所有 属于一个进程的前台线程已经终止,常见的 语言运行时结束该过程。任何剩余的后台线程 已停止且未完成。
【讨论】: