终止在C#中运行消息循环的工作线程

时间:2013-02-08 17:10:57

标签: c# .net windows winforms

我在工作线程中使用了SetWindowHookEx() Windows API,并使用Application.Run()接收了运行Application Message Pump的操作系统通知。

现在,我想停止消息泵并退出工作线程,但我没有办法终止该线程。

或者,我使用Thread.Abort()方法来终止线程,但这不是推荐的方法来优雅地终止线程。

任何人都可以建议如何从UI线程或主窗体优雅地关闭消息泵,以便工作线程自动返回并退出?

3 个答案:

答案 0 :(得分:4)

而不是使用无参数Application.Run使用接受ApplicationContext的重载。

应用程序上下文有一个ExitThread方法,可以优雅地结束消息循环。

答案 1 :(得分:0)

为什么不从另一个线程调用Application.Exit?

答案 2 :(得分:-2)

如果你优雅地处理Thread.Abort()将在工作线程中引起的ThreadAbortException,那么对于中止线程没有任何不妥之处。