网站建设哪家稳妥,淘宝网店托管,网站设计制作要交印花税,开发商城网站公司创建一个线程
Task的创建和执行方式有如下三种#xff1a; 可以带参数 public void testTask(string[] args){//1.new方式实例化一个Task#xff0c;需要通过Start方法启动Task task new Task(() {Thread.Sleep(100);Console.WriteLine($hello, task1的线程ID为{…创建一个线程
Task的创建和执行方式有如下三种 可以带参数 public void testTask(string[] args){//1.new方式实例化一个Task需要通过Start方法启动Task task new Task(() {Thread.Sleep(100);Console.WriteLine($hello, task1的线程ID为{Thread.CurrentThread.ManagedThreadId});});task.Start();//2.Task.Factory.StartNew(Action action)创建和启动一个TaskTask task2 Task.Factory.StartNew(() {Thread.Sleep(100);Console.WriteLine($hello, task2的线程ID为{ Thread.CurrentThread.ManagedThreadId});});//3.Task.Run(Action action)将任务放在线程池队列返回并启动一个TaskTask task3 Task.Runstring(() {Thread.Sleep(100);return $hello, task3的线程ID为{ Thread.CurrentThread.ManagedThreadId};});Console.WriteLine(执行主线程);Console.ReadKey();}Task的阻塞方法(Wait/WaitAll/WaitAny)
task.Wait() 表示等待task执行完毕功能类似于thead.Join() Task.WaitAll(Task[] tasks) 表示只有所有的task都执行完成了再解除阻塞 Task.WaitAny(Task[] tasks) 表示只要有一个task执行完毕就解除阻塞
//阻塞主线程。task1,task2都执行完毕再执行主线程//执行【task1.Wait();task2.Wait();】可以实现相同功能Task.WaitAll(new Task[] { taskwait1, taskwait2 });使用后 当前线程阻塞 等 使用的线程结束 如果将的WaitAll换成WaitAny那么任一task执行完毕就会解除线程阻塞执行结果是
Task的延续操作(WhenAny/WhenAll/ContinueWith)
//task1task2执行完了后执行后续操作Task.WhenAll(task, task2).ContinueWith((t) {Thread.Sleep(100);Console.WriteLine(执行后续操作完毕);});//通过TaskFactroy实现 等待完成后执行后续的线程Task.Factory.ContinueWhenAll(new Task[] { task, task2 }, (t) {Console.WriteLine($hello, task ContinueWhenAll的线程ID为{Thread.CurrentThread.ManagedThreadId});});Task的任务取消(CancellationTokenSource)