2012-05-29 95 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