【发布时间】:2011-04-26 02:00:55
【问题描述】:
我正在编写一个 GUI 应用程序。
应用程序在其生命周期内打开多个线程。其中一个线程正在处理可能来自其他应用程序的事件,因此它在 while(true) 循环中等待从未终止的事件。
用户可以随时关闭应用程序。我想关闭主应用程序打开的所有线程。
我正在使用 Process.GetCurrentProcess().Kill();暂时解决这个问题。
这是一个好的解决方案吗?如果不是,为什么以及处理这个问题的正确方法是什么,如何关闭主应用程序打开的所有线程?
【问题讨论】:
-
你应该避免
while(true)的空闲工作。至少添加一个Sleep(100)给你的cpu 一些喘息的空间。查看诸如albahari.com/threading 或csharpcourse.com 之类的免费书籍,了解如何在不进行空闲工作的情况下正确地保持线程处于活动状态。 -
while(true) 循环正在等待事件。由于它有一个阻塞的waitOne(),它并没有粗暴地使用我的cpu。
标签: c# .net winforms multithreading