Task用法

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值