目录
启动
两种启动方式
Task task1=new Task(()=>{
System.Console.WriteLine("我是Task1");
});
task1.Start();
Task task2=Task.Factory.StartNew(()=>{
System.Console.WriteLine("直接输出Task2");
});
生命周期
Task task1=new Task(()=>{
System.Console.WriteLine("开始线程");
System.Threading.Thread.Sleep(2000);
System.Console.WriteLine("结束线程");
});
System.Console.WriteLine("开始之前状态"+task1.Status);
task1.Start();
System.Console.WriteLine("开始之时状态"+task1.Status);
task1.Wait();
System.Console.WriteLine("结束之后状态"+task1.Status);
执行之后,结果如下
开始之前状态Created
开始之时状态WaitingToRun
开始线程
结束线程
结束之后状态RanToCompletion
等待任意一个执行任务完成
Task task1=new Task(()=>{
System.Console.WriteLine("开始1线程");
System.Threading.Thread.Sleep(2000);
System.Console.WriteLine("结束1线程");
});
Task task2=new Task(()=>{
System.Console.WriteLine("开始2线程");
System.Threading.Thread.Sleep(3000);
System.Console.WriteLine("结束2线程");
});
task1.Start();
task2.Start();
Task.WaitAny(task1,task2);
System.Console.WriteLine("结束");
结果:
开始2线程
开始1线程
结束1线程
结束
任务回调
执行完Task任务之后回调的函数
Task task1=new Task(()=>{
System.Console.WriteLine("开始1线程");
System.Threading.Thread.Sleep(2000);
System.Console.WriteLine("结束1线程");
});
task1.Start();
var result=task1.ContinueWith<string>(task =>{
return "task1回调方法";
});
System.Console.WriteLine(result.Result.ToString());
结果:
开始1线程
结束1线程
task1回调方法