2012-11-30 23 views
1

右我從同一個類的靜態函數創建了一個新線程。C++ .net委託不工作 - 編譯器錯誤

在同一個班級裏,我嘗試調用委託來更新GUI。 我收到一個編譯器錯誤說:

無效的委託初始值設定項 - 除了函數需要一個對象。 At & MainUi :: AddListItemMethod。

delegate void AddListItem(void); 
    public: void AddListItemMethod(String^ myString) 
    { 
     ListView1->Items->Add(myString); 
    } 

private: static void SecondThread() 
{ 
AddListItem^ del = gcnew AddListItem(&MainUI::AddListItemMethod); 
del->Invoke("test"); 
} 

我不知道爲什麼它不起作用。我也試過這個,但仍然失敗。請幫忙嗎?

Invoke(gcnew AddListItem(MainUI::&AddListItemMethod), "test"); 
+0

需要使用靜態方法才能像這樣使用'MainUI :: AddListItemMethod'。 –

+0

好吧,但我需要的方法是非靜態的,所以它可以訪問Listview1控件。我該如何解決它? – user1255454

+0

要麼必須讓Listview1靜態工作,要麼應該創建一個MainUI類的實例/對象來訪問該類的非靜態方法。 –

回答

2

要麼你必須做出Listview1靜態的工作或你應該創建MainUI類的實例/對象訪問類的非靜態方法。

謝謝你和快樂編碼。