访问类中 threadproc 中的成员函数

Accessing member functions in threadproc within a class

本文关键字:成员 函数 threadproc 访问      更新时间:2023-10-16

>我在使用 mfc 函数时遇到了一个难题

AfxBeginThread(AFX_THREADPROC pfnThreadProc,
   LPVOID pParam,
   int nPriority = THREAD_PRIORITY_NORMAL,
   UINT nStackSize = 0,
   DWORD dwCreateFlags = 0,
   LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL 
);

显然,AFX_THREADPROC类型是一个参考。这就是奏效的方法。所以在一个类(构造函数)中,我调用这个函数来启动一个线程使用线程路由调用它 MyThreadProc() 引用如下。

pfnThreadProc = &MyThreadProc;

我从另一个程序复制了这种用法,MyThreadProc() 定义了它在类外(称之为USBCom)。这工作正常。线程得到了开始。我调试它完成就好了。伟大。然后我意识到此线程例程必须调用其他成员函数才能获得它的完成工作线程职责。我试着在里面打电话,就像

.. USBCom:MyMemberFunc() ..

无济于事。所以后来我把这个MyThreadProc()移到了我的类中。USBCom。编译我不能使用AfxBeginThread()的这个实例化。

我想&MyThreadProc()是问题所在(它所指向的)。可能是一些关于不允许成员函数地址的标准被传来传去——那整个封装的唐。

那么我该如何解决这种困境。我可以在类中启动线程的位置线程进程在类之外但有权访问或查看到启动它的类中的成员函数。

作为一些背景,此线程的目的是读取状态我正在使用的 USB 端口以及通过 USB 2.0 发送给我的数据。我有绩效里程碑要达到,所以我希望这是精益的。我该怎么做做吧??

疯狗

ps:我正在与 FDDi FT240XS USB FIFO 通信。

混淆源于使用"&"作为"地址"与"引用"之间的差异

在C++中,指针变量和引用变量有什么区别?

博士:

int foo;
int *pointer = &foo;
int &reference = foo;

我希望这有帮助

我认为找到了答案,并不是说你的答案不会那么好用。它更糟糕的是,我遇到了必须解决的许可问题也。现在就这样做了。

无论如何,我的回答是我必须公开这些方法。我读过一个指向已将此类实例化为 的对象的指针

UINT MyThreadProc(LPVOID param)
{
  MyClass *pMyHndl = (MyClass*)param;
  pMyHndl->myPublicFunct();
}

其中 myPublicFunct() 是类 MyClass() 的成员函数。

想了想,我多傻啊。

感谢您的所有帮助。

疯狗