2010-04-08 67 views
2

如果我有:簡單的多線程 - 合併報表兩條線

ThreadStart starter = delegate { MessageBox.Show("Test"); }; 
new Thread(starter).Start(); 

我怎樣才能結合到這一行代碼?我已經試過:

new Thread(delegate { MessageBox.Show("Test"); }).Start(); 

但我得到這個錯誤:

The call is ambiguous between the following methods or properties: 'System.Threading.Thread.Thread(System.Threading.ThreadStart)' and 'System.Threading.Thread.Thread(System.Threading.ParameterizedThreadStart)'

回答

6
new Thread(() => MessageBox.Show("Test")).Start(); 

new Thread((ThreadStart)delegate { MessageBox.Show("Test"); }).Start(); 

new Thread(delegate() { MessageBox.Show("Test"); }).Start(); 

問題是,當你聲明一個委託而不指定它有多少個參數,編譯器不知道你是指ThreadStart(0參數)還是ParameterizedThreadStart(1參數)。