2011-01-06 155 views
0

我有一個按鈕中的新線程的代碼 每當我點擊該按鈕時創建新線程。我想要某種方式,以便我可以在窗體上包含所有線程的進度創建 像含標籤列表框,顯示百分比完成動態線程和標籤創建

var t = new Thread(() => 
     { 
      for(int i=0;i<1000;i++) 
      { 
       x++; 
      } 
     }); 
     t.SetApartmentState(ApartmentState.STA); 
     t.Name = projectName; 
     t.Start(); 

很抱歉,如果如果你保持你有多少個線程啓動計數,並使用索引開始每過這聽起來很傻

+2

你在使用什麼架構? WPF?的WinForms? – 2011-01-06 21:12:01

回答

1

首先考慮使用基於任務的方法(僅當您使用.NET 3.5或更高版本時)。

無論如何,當您創建新線程時,您可以將新標籤添加到ListBox中,並隨着工作進度繼續更新其內容。
例如:

void ButtonClick(object sender, RoutedEvent e) 
{ 
    Label label = new Label(); 
    listBox1.Items.Add(label);  

    Task.Factory.StartNew(() => 
    { 
     for (int i = 0; i < 100; i++) 
     { 
      label.Content = (i + 1).ToString() + "%"; 
     } 
    }); 
} 

顯然固定跨線程調用(與Dispatcher.Invoke/Dispatcher.BeginInvoke在WPF,或者與label.Invoke Winforms中)。

0

,那麼線程可以更新該索引處的進度值。

+0

但我必須顯示與棘手部分 – 2011-01-06 21:58:19

+0

一樣多的標籤。因此,在啓動線程時添加一個新行。 – 2011-01-06 22:00:19