我有一个 MFC 常规 DLL 项目,在 Visual Studio 2008 下运行良好,但是当项目升级到 VS 2010 时,出现了一个新问题,即 appcore.cpp 中的以下断言将失败:
CWinApp::CWinApp(LPCTSTR lpszAppName)
{
[...]
ASSERT(AfxGetThread() == NULL);
当创建多个 CDialog 派生类的实例时,断言将失败。根据我在网络上所做的研究,似乎 MFC 的行为发生了变化,这会导致此故障。
根据我的阅读,解决这个问题的方法是在新的 CWinThread 中创建每个 CDialog 派生类,但我遇到了同样的问题,所以,我确定我的实现中缺少一些东西,但是,我不'不知道缺少什么。
我曾经尝试在 CWinThread 类中创建 CDialog 的示例来自http://www.experts-exchange.com/Programming/System/Windows__Programming/A_1886-Create-a-Dialog-in-its-Own-Thread。 html,但是我的代码仍然在上面列出的 ASSERT 中失败。
所以我的问题是,有没有人有一个很好的例子,有源代码,关于如何在 MFC 常规 DLL 中使用 CWinThread 正确创建多个 CDialog 派生类?
哦,如果我对创建多个线程来解决上面列出的 ASSERT 的理解是错误的,请告诉我为什么。