我将以下作业发送到多个线程以从主 UI 线程进行处理。完成所有作业后,我需要发出一条消息“作业已完成”,让用户知道它已完成。
LimitedTaskScheduler scheduler = new LimitedTaskScheduler(4);
TaskFactory factory = new TaskFactory(scheduler);
MessageBox.Show("Job started");
for (int i = 0; i < rows.Length; i++)
{
string tabName = rows[i]["TableName"].ToString();
int nStatus;
factory.StartNew<int>(() =>
{
nStatus = ProcessTable(tabName);
return nStatus;
});
}
MessageBox.Show("Job finished");
在上面的代码中,MessageBox.Show("Job finished"); 任务发送后立即执行,这是错误的。如果我使用 Task.WaitAll(); 它会锁定我不想要的主 UI 线程。
我的问题是在所有任务完成而不锁定主 UI 线程的情况下显示“作业完成”消息的最佳方式是什么?
提前致谢。