在c#中模拟lan messenger时,我创建了一个线程,用于侦听来自lan上远程主机的广播通知。为了收听广播消息,我正在调用sleep函数并再次重新启动线程的执行。 这个问题是当我关闭我的表单时,这个线程继续运行。当我关闭表单时是否有任何事件被调用?
答案 0 :(得分:2)
如果在侦听器线程上将.IsBackground属性设置为true,则在关闭应用程序时它将被关闭。
在表单实际关闭之前调用Form.Closing,然后调用Form.Close - 您也可以使用其中任何一个终止线程。
答案 1 :(得分:1)
您的线程应该等待来自主(表单)线程的信号(具有与睡眠方法的睡眠时间相当的超时),而不是睡眠功能。
处理关闭事件时:
Thread.Join
答案 2 :(得分:0)
Form.Closed怎么样?