如何创建委托实例?

时间:2012-05-29 14:59:08

标签: windows multithreading visual-c++ c++-cli

我有一个功能

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

是的,有人能帮帮我吗?它让我发疯,我无法弄明白。

谢谢!

1 个答案:

答案 0 :(得分:0)

使用托管线程而不是_beginthread。

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

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