我在按钮中有新线程的代码 每当我点击那个按钮时都会创建一个新线程。我想要一些方法,以便我可以在表单上包含一些内容,其中包含所有创建的线程的进度 像列表框一样包含显示完成百分比的标签
var t = new Thread(() =>
{
for(int i=0;i<1000;i++)
{
x++;
}
});
t.SetApartmentState(ApartmentState.STA);
t.Name = projectName;
t.Start();
对不起,如果听起来很傻
答案 0 :(得分: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() + "%";
}
});
}
显然修复了跨线程调用(在WPF中使用Dispatcher.Invoke / Dispatcher.BeginInvoke,或在WinForms中使用label.Invoke)。
答案 1 :(得分:0)
如果你继续计算你启动的线程数,并用索引启动每个线程,那么线程可以更新该索引的进度值。