2011-01-06 77 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