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

本文关键字:循环 工作 线程 消息 运行 终止 | 更新日期: 2023-09-27 17:58:36

我在工作线程中使用了SetWindowHookEx() Windows API,并通过使用Application.Run()运行应用程序消息泵来接收操作系统通知。

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

或者,我使用Thread.Abort()方法来终止线程,但不建议使用这种方法来优雅地终止线程。

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

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

与其使用无参数Application.Run,不如使用接受ApplicationContext的重载。

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

为什么不直接调用Application.从另一个线程退出?

如果您优雅地处理Thread.Artrt()将在工作线程中引起的ThreadAbortException,那么中止线程并没有什么不可取的。