首页 > 解决方案 > 如何将运行时类传递给 AfxBeginThread

问题描述

Class A
{
    method1()
    {
         m_GetDataThread         = AfxBeginThread(B::method2, RUNTIME_CLASS, THREAD_PRIORITY_BELOW_NORMAL, 1 << 20, STACK_SIZE_PARAM_IS_A_RESERVATION);
    }

}

Class B
{
    method2()
    {
         ----------
    }
}

在这里,如果 RUNTIME_CLASS 是 A 类,我可以通过它来代替 RUNTIME_CLASS 但在上述情况下如何通过 B 类?

标签: c++multithreadingclassobject

解决方案


  1. AfxBeginThread有两个重载,一个采用函数或静态方法,另一个采用运行时类,它们是互斥的。this并且没有一个采用非静态方法(并且几乎不存在这样的函数)
  2. RUTNIME_CLASS宏将类名作为参数,所以你问的问题不是问题。
  3. 2020 年是否必须使用 MFC 是可以理解的,但无论如何不明白为什么 2020 年新代码必须使用 MFC 线程工具。考虑一下std::thread,,std::async或者至少直接_beginthreeadex/CreateThread

推荐阅读