Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 试图从托管类创建非托管线程_C++_Multithreading_Visual C++_Unmanaged_Managed - Fatal编程技术网

C++ 试图从托管类创建非托管线程

C++ 试图从托管类创建非托管线程,c++,multithreading,visual-c++,unmanaged,managed,C++,Multithreading,Visual C++,Unmanaged,Managed,这是我的设想 void SecondThread { //more code } private: System::Void Button_Click(System::Object^ sender, System::EventArgs^ e) { //where I click my button event CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&SecondThread, 0, 0, NULL);

这是我的设想

void SecondThread
{
    //more code
}

private: System::Void Button_Click(System::Object^  sender, System::EventArgs^  e) 
{
    //where I click my button event
    CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&SecondThread, 0, 0, NULL);
}
如您所见,我试图使用指向.NET函数中非托管函数的指针。 它给出了这个错误

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

有人知道我怎样才能摆脱它吗?另外,我对这样启动线程不感兴趣,因为我需要使用非托管代码:

*ThreadStart myThreadDelegate=新的ThreadStart(这个,重复); trd->Start()


谢谢,非常感谢。

请勿使用会员功能。在类之外使用静态函数。如果需要访问私有成员,请将类a参数传递给threadfunc,并将函数声明为类的朋友。您可能需要使用gcroot来包装类实例。但是我的第二个线程也可以从我正在使用的UI访问成员,因此如果我在外部静态使用它,那么我将无法再访问它们…为什么不呢。您还可以将包含对UI的引用的状态对象传递给UI。另外,在没有调用或BeginInvoke的情况下从不同的线程调用UI时,您应该小心。如果您所做的工作实际上是托管工作,那么您应该按照您的要求执行,而不是使用thread对象