我在工作线程中使用了SetWindowHookEx()
Windows API,并使用Application.Run()
接收了运行Application Message Pump的操作系统通知。
现在,我想停止消息泵并退出工作线程,但我没有办法终止该线程。
或者,我使用Thread.Abort()
方法来终止线程,但这不是推荐的方法来优雅地终止线程。
任何人都可以建议如何从UI线程或主窗体优雅地关闭消息泵,以便工作线程自动返回并退出?
答案 0 :(得分:4)
而不是使用无参数Application.Run
使用接受ApplicationContext
的重载。
应用程序上下文有一个ExitThread
方法,可以优雅地结束消息循环。
答案 1 :(得分:0)
为什么不从另一个线程调用Application.Exit?
答案 2 :(得分:-2)
如果你优雅地处理Thread.Abort()将在工作线程中引起的ThreadAbortException,那么对于中止线程没有任何不妥之处。