指向成员的指针对于托管类无效

时间:2019-03-28 11:11:50

标签: c++-cli

我在Visual Studio C ++中有一个Windows窗体。 (CLR)

在头文件中,我声明void createThread()

private: 

  void createThread() {
            char buffer[1024];
            ZeroMemory(buffer, sizeof(buffer));
            while (true) {
                recv(connection, buffer, sizeof(buffer), 0);
                main.displayMessage(gcnew System::String(buffer));
            }
            ExitThread(0);
    }

现在,我想调用函数createThread CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)createThread,NULL,NULL,NULL) 之后,我得到这个错误: 指向成员对托管类无效

我尝试了用户线程库,但不支持。我该如何解决?

1 个答案:

答案 0 :(得分:0)

似乎此函数在托管类中定义。您需要使用托管的thread object,而不是非托管的CreateThread。

存在此错误的原因有两个:首先,它是一个实例方法,而不是静态方法,因此需要使用这种类型的实例来调用它,而这种方法无法传递给CreateThread。其次,它是一个托管对象,其方法不会轻易转换为C风格的原始函数指针。

最后,关于该语言的注释:C ++ / CLI旨在作为一种将托管代码(例如C#)与非托管C ++接口的方法。它不打算用作主要的开发语言。如果不需要链接托管和非托管代码,则可能要考虑为应用程序切换到C#或C ++。