考虑以下线程函数:
UINT MyClass::threadFunc(LPVOID lParam)
{
// 1. Initialize stuff
// 2. Validate stuff
// 3. Do first task
// 4. Do second task
// 5. Un-initialize everything and return
}
这个线程是由我的应用程序中的一个对话框创建的。该线程在对话框的生命周期中只会运行一次(它是一个工作线程)。
在一些异步事件发生时(可能是按钮的点击,一些其他事件的信号,等等),我想通知这个线程立即返回,这样我的对话框就可以优雅地退出(在等待这个线程结束之后)终止)。我不能只退出对话框,因为该线程仍将运行。
我对 C++ 比较陌生,这是我想到的(伪代码):
- 将线程函数包围在
try-catch
中。 - 在发生该异步事件时,抛出一个线程终止异常。
这没有用,所以我研究了一下,找到了类似于 this one 的答案.但出于某种原因,我觉得有一种更简单的方法可以实现这一点。在我着手实现上述想法之前,我只是想澄清一下。
谢谢!
最佳答案
一些搜索,我发现了这些:
Windows ,Exception Injection: Throwing an Exception in Other Thread , 定义
ThreadAbort
可移植,How can I propagate exceptions between threads? ,正如你提到的
关于c++ - 当发出特定事件信号时,立即退出正在运行的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15308078/