【发布时间】:2011-12-12 18:24:45
【问题描述】:
如何使用任意非静态类方法调用 AfxBeginThread?也许我可以用boost bind 做点什么?以下是 Microsoft 的预期用法(并且是调用非静态方法的示例,但它是硬编码的方法):
UINT MyThreadProc( LPVOID pParam )
{
CMyObject* pObject = (CMyObject*)pParam;
if (pObject == NULL ||
!pObject->IsKindOf(RUNTIME_CLASS(CMyObject)))
return 1; // if pObject is not valid
// do something with 'pObject'
return 0; // thread completed successfully
}
// inside a different function in the program
...
pNewObject = new CMyObject;
AfxBeginThread(MyThreadProc, pNewObject);
【问题讨论】:
-
您已经有了解决方案。您在问题中发布了它。哪方面对你来说不够?
-
我希望能够在线程中执行任意类成员函数,就像使用 boost 线程一样。我发布的示例有效,但它被硬编码为特定的类。我想使用 boost 线程,但在 MFC 上下文中使用它时似乎存在一些问题。
-
你必须在有占位符注释的地方调用你的成员函数“用'pObject'做一些事情”。抱歉,事情就是这样。
标签: c++ windows multithreading boost-bind member-functions