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对象