2012-05-29 94 views
0

我有一个函数如何创建委托实例?

void __stdcall TestThread(String^ a, String^ b) 
{ 
MessageBox::Show(a); 
MessageBox::Show(b); 

_endthread(); 
} 

,我想创建这样一个主题:
_beginthread(&HWSW_GUI::Form1::TestThread , 0, NULL);

不幸的是我得到了一个错误: Error 2 error C3374: can't take address of 'HWSW_GUI::Form1::TestThread' unless creating delegate instance d:\testvs2008\hwsw_gui\hwsw_gui\Form1.h 5177

有人能帮助我吗?这让我疯狂,我不知道它。

谢谢!

+0

不要混合托管代码和非托管代码。而不是_beginthread使用托管线程http://msdn.microsoft.com/en-us/library/system.threading.thread.aspx#Y5314 –

+0

@AlexFarber:谢谢!它正在工作。还有一个问题。我怎样才能将参数传递给线程? – kampi

回答

0

使用托管线程而不是_beginthread。

要传递参数给线程,使用螺纹(ParameterizedThreadStart)构造:http://msdn.microsoft.com/en-us/library/1h2f2459.aspx

一般来说,任何.NET语言工作,包括C++/CLI,避免使用非托管的东西(如PInvoke的或混合托管/非托管代码在C++/CLI中),除非这是绝对必要的。大多数标准编程任务可以使用纯托管代码来解决。

+0

您是否知道如何将多个参数传递给线程?例如一个布尔和一个String ^?这就是为什么我想使用_beginthread,因为我无法得到它的工作:(我不能通过这种方式多个参数 – kampi

+0

创建类,其中包含您需要的一切,并将此类实例作为线程参数 –

+0

谢谢!!正在工作! – kampi