活动以结束形式

时间:2009-04-21 04:39:48

标签: c# forms event-handling

在c#中模拟lan messenger时,我创建了一个线程,用于侦听来自lan上远程主机的广播通知。为了收听广播消息,我正在调用sleep函数并再次重新启动线程的执行。 这个问题是当我关闭我的表单时,这个线程继续运行。当我关闭表单时是否有任何事件被调用?

3 个答案:

答案 0 :(得分:2)

如果在侦听器线程上将.IsBackground属性设置为true,则在关闭应用程序时它将被关闭。

在表单实际关闭之前调用Form.Closing,然后调用Form.Close - 您也可以使用其中任何一个终止线程。

答案 1 :(得分:1)

您的线程应该等待来自主(表单)线程的信号(具有与睡眠方法的睡眠时间相当的超时),而不是睡眠功能。

处理关闭事件时:

  1. 主线程应设置此信号并调用Thread.Join
  2. 另一个线程应退出循环并完成其工作
  3. 主线程然后恢复关闭表单的工作。

答案 2 :(得分:0)

Form.Closed怎么样?