我在使用
的Form_Load之前运行两个长并行任务private void task1()
{
//Long task
}
private void task2()
{
//Long task
}
Task tsk=new Task(task1);
Task tsk2=new Task(task2);
Parallel.ForEach(new [] {tsk, tsk2},item=>item.Start());.
在任务完成后打开表单时,表单会在最小化时通过单击任务栏中的应用程序按钮挂起30秒,然后变为活动状态。有办法克服这个问题吗? 谢谢
编辑添加:
private static bool modalDisposed=false;
private ModalLoad ml = new ModalLoad();
private void Form_Load(object sender,EventArgs e)
{
ml.Show(this);
Task tsk=new Task(task1);
Task tsk2=new Task(task2);
Parallel.ForEach(new [] {tsk, tsk2},item=>item.Start());.
}
private void task1()
{
//long task
modalDisposed=true;
System.Threading.Thread.Sleep(100);
Application.OpenForms["ModalLoad"].Dispose();
}
private void task2()
{
while(!modalDisposed)
{
ml.updateLabel();
}
}
在模态表格中,我更新标签
private static int ui=0;
public void updateLabel()
{
this.Invoke((MethodInvoker)delegate
{
lblUI.Text=ui+"";
ui++;
});
}