2013-03-09 54 views
1

考虑下面的线程函数:马上有一个正在运行的线程退出,当一个特定的事件发出信号

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++,这是我所想象的(伪)的:

  1. 环绕在try-catch线程功能。
  2. 发生该异步事件时,抛出线程终止异常。

这不起作用,所以我研究了一下,找到了类似于this one的答案。但由于某种原因,我有一种感觉,有一种更简单的方法来实现这一点。在我执行这个想法之前,我只是想澄清一下。

谢谢!

+0

+1好问题,我有时需要这种功能可以优雅地中止线程。 – deepmax 2013-03-09 07:31:18

回答

1

一些网站的搜索,我发现这些:

+0

我错误地低估了。我想知道是否有办法做到这一点,而不使用异常处理。另外,您的第二个链接和我发布的链接也是一样的。现在查看第一个链接。谢谢! – 2013-03-09 07:02:09

+0

我没有注意到你的第二个链接。但第一个链接可能会帮助你。 – deepmax 2013-03-09 07:04:03

+0

您的第一个链接似乎很有用。肯定会尝试一下。但我的问题是,这一切是否真的有必要。我只想让该线程在某些事件中退出。处理异常是最好的方式吗? – 2013-03-09 07:08:24

相关问题