1.Task.Start()
异步指令,可多个task线程启动,需要耗时(约数ms)。
多任务线程状态下,各自线程相互独立,一般按时间片轮转进行分时执行。
long StartTime = DateTime.Now.Ticks; // _CT
tasks[0].Start();
tasks[1].Start();
tasks[2].Start();
threadData.Add($@"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss,fff")} ,ct is {new TimeSpan(DateTime.Now.Ticks - StartTime)}"); // _CT
2.Task.WaitAll()
同步指令,Task类中的等待函数,可等待多个task任务执行完成后返回。
StartTime = DateTime.Now.Ticks; // _CT
Task.WaitAll(tasks[0], tasks[1], tasks[2]);
threadData.Add($@"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss,fff")} ct is {new TimeSpan(DateTime.Now.Ticks - StartTime)}"); // _CT
3.task.Result
同步指令,task对象中的属性,等待该任务执行完成并返回结果。
StartTime = DateTime.Now.Ticks; // _CT
bool result0 = tasks[0].Result;
bool result1 = tasks[1].Result;
bool result2 = tasks[2].Result;
if (!result0 || !result1 || !result2)
{
threadData.Add($"Single swath start failed, thread0 ~ 2 occur error");
MessageBox.Show($"Single swath start failed, thread0 ~ 2 occur error");
return;
}
threadData.Add($@"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss,fff")}, ct is {new TimeSpan(DateTime.Now.Ticks - StartTime)}"); // _CT
4.Task.Run(() => {});
异步指令,可异步执行{}中的命令。
StartTime = DateTime.Now.Ticks;
Task.Run(() =>
{
tasks[0] = new Task<bool>(thread0);
tasks[1] = new Task<bool>(thread1);
tasks[2] = new Task<bool>(thread2);
});
threadData.Add($@"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss,fff")}, ct is {new TimeSpan(DateTime.Now.Ticks - StartTime)}"); // _CT