C# 如何在窗口关闭按钮单击时终止wpf应用程序中的所有线程
我已经创建了一个WPF应用程序。在我的应用程序中运行两个线程:C# 如何在窗口关闭按钮单击时终止wpf应用程序中的所有线程,c#,wpf,C#,Wpf,我已经创建了一个WPF应用程序。在我的应用程序中运行两个线程: 第一个线程异步侦听端口40010上的TCP数据包,并将数据推送到MSMQ 来自MSMQ的第二个线程pop数据 当我通过单击窗口关闭按钮关闭应用程序时,它不会显示任何错误。 但当我再次启动应用程序时,它会引发异常: Unable to start Listrner : Only one usage of each socket address (protocol/network address/port) is normal
Unable to start Listrner : Only one usage of each socket address
(protocol/network address/port) is normally permitted
当我重新启动电脑时,它第一次成功运行,但在关闭应用程序时,它不再工作您不应终止线程 你应该做的是提供一个很好的方式让他们完成。关闭应用程序时,应设置一些变量:
volatile bool shouldClose;
在你的线程中使用这个变量,比如在弹出下一个包之前,停止无限循环
至于主应用程序,它应该等待线程完成
有关volatile关键字,请参见。+,总结一下:这是取消令牌模式,例如在.Net 4.0(,)中为
系统.Threading.Task.Task
引入的-因此,如果您使用.Net 4.0并使用任务,您可以简单地使用该例程(并且应该)!