如何正确的关闭 MFC 线程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何正确的关闭 MFC 线程相关的知识,希望对你有一定的参考价值。

参考技术A

说一下常用的2种方式:

    强制终止线程:TerminateThread

    线程中添加一个消息如WM_CLOSE 用于return,关闭时向该线程发送WM_CLOSE消息即可。

如何在 MFC C++ 中开始使用线程编程? [关闭]

【中文标题】如何在 MFC C++ 中开始使用线程编程? [关闭]【英文标题】:How to start programming with threads in MFC C++? [closed] 【发布时间】:2011-01-07 11:10:50 【问题描述】:

我需要使用 cwinthread 或 afxbeginthreads 创建新线程(不同的类)。我不知道如何开始以及我需要使用其中的哪一个。请帮忙... 谢谢

【问题讨论】:

创建一个线程很容易,但让多个线程正确地协同工作非常困难。如果你没有先阅读一本关于该主题的好书就尝试这样做,你会后悔的。 【参考方案1】:

MFC 中有两种类型的线程:

工作线程只需在后台执行任务然后退出 具有消息泵的用户界面线程,即您可以向其发送消息

当我很久以前在 MFC 中使用它时,我非常不喜欢不能创建类,因为它们强迫你用他们的工厂来做,因此你不能用它需要用来执行的参数来初始化它,因为它的 InitInstance() 也不需要参数(我认为)。换句话说,你真的不能向它们传递任何上下文数据,除非你创建它们暂停,我发现我总是必须这样做。

工作线程是我也更愿意在没有 MFC 的情况下做的事情,因为我非常不喜欢 MFC 对非 GUI 代码的侵入性,也就是说,我并不像 Widgets 库那样介意它,但是一旦你发现它把它放在你的项目中,你“卡住”了它。

我不得不支持 MFC 项目,但项目中的任何新代码区域我都会远离 MFC,如果可能的话甚至使用 Win32API。

【讨论】:

【参考方案2】:

您好,您可以阅读这篇文章http://msdn.microsoft.com/en-us/library/69644x60(v=vs.80).aspx 和这篇文章in class

【讨论】:

以上是关于如何正确的关闭 MFC 线程的主要内容,如果未能解决你的问题,请参考以下文章

MFC 如何在主线程中判断子线程是不是运行,运行则关闭子线程?

如何“正确关闭 MFC 无模式对话框并修复资源泄漏”

如何从工作线程访问 MFC 控件?

MFC:如何从不同的线程绘制opengl?

我如何做很酷的对话 (MFC)

如何在另一个线程中关闭 MFC 模态对话框并获得对话框返回值?