终止正在C#中运行消息循环的工作线程
本文关键字:循环 工作 线程 消息 运行 终止 | 更新日期: 2023-09-27 17:58:36
我在工作线程中使用了SetWindowHookEx()
Windows API,并通过使用Application.Run()
运行应用程序消息泵来接收操作系统通知。
现在,我想停止消息泵并退出工作线程,但我没有终止线程的好方法。
或者,我使用Thread.Abort()
方法来终止线程,但不建议使用这种方法来优雅地终止线程。
有人能建议如何从UI线程或主窗体优雅地关闭消息泵,以便工作线程自动返回和退出吗?
与其使用无参数Application.Run
,不如使用接受ApplicationContext
的重载。
应用程序上下文有一个ExitThread
方法,它将优雅地结束消息循环。
为什么不直接调用Application.从另一个线程退出?
如果您优雅地处理Thread.Artrt()将在工作线程中引起的ThreadAbortException,那么中止线程并没有什么不可取的。