日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#嵌套任务和子任务

發(fā)布時間:2024/8/23 C# 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#嵌套任务和子任务 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

  任務(wù)嵌套就是指在一個任務(wù)中又創(chuàng)建了一個任務(wù),而這個新建的任務(wù),就被稱為子任務(wù)。在沒有特殊聲明的情況下,父子任務(wù)是一起運(yùn)行的,如SimpleNestedTask方法。
  如果想讓父子任務(wù)關(guān)聯(lián)起來的話,需要在創(chuàng)建子任務(wù)的時候,增加參數(shù)TaskCreationOptions.AttachedToParent,將父子任務(wù)關(guān)聯(lián)起來,這樣父任務(wù)將等待子任務(wù)完成,才會完成。
  如果使用Task<TResult>創(chuàng)建任務(wù)的話,這不需要使用TaskCreationOptions.AttachedToParent參數(shù)了,因為只要父任務(wù)使用了子任務(wù)的返回結(jié)果,父任務(wù)自然就會等待子任務(wù)完成。

public class Program{static void Main(string[] args){ WaitForSimpleNestedTask();Console.WriteLine("=====================================================");SimpleNestedTask();Thread.SpinWait(600000);//等待SimpleNestedTask結(jié)束 再運(yùn)行Console.WriteLine("=====================================================");//SimpleNestedTaskAttachedToParent(); Console.Read();}static void WaitForSimpleNestedTask(){var outer = Task<int>.Factory.StartNew(() =>{Console.WriteLine("Outer1 task executing.");var nested = Task<int>.Factory.StartNew(() =>{Console.WriteLine("Nested1 task starting.");Thread.SpinWait(5000000);Console.WriteLine("Nested1 task completing.");return 42;});// 父任務(wù)等待子任務(wù)完成return nested.Result;// 父任務(wù)不等待子任務(wù)完成//return 1; });//輸出的時候使用了返回值outer.Result,所以自動等待父任務(wù)完成Console.WriteLine("Outer1 has returned {0}.", outer.Result);}static void SimpleNestedTask(){var parent = Task.Factory.StartNew(() =>{Console.WriteLine("Outer2 task executing.");var child = Task.Factory.StartNew(() =>{Console.WriteLine("Nested2 task starting.");Thread.SpinWait(500000);Console.WriteLine("Nested2 task completing.");});});//等待父任務(wù)完成,再輸出字符串,如果沒有這個等待,這句話會先輸出 parent.Wait();Console.WriteLine("Outer2 has completed."); }static void SimpleNestedTaskAttachedToParent(){var parent = Task.Factory.StartNew(() =>{Console.WriteLine("Outer3 task executing.");var child = Task.Factory.StartNew(() =>{Console.WriteLine("Nested3 task starting.");Thread.SpinWait(500000);Console.WriteLine("Nested3 task completing.");}, TaskCreationOptions.AttachedToParent);//增加參數(shù)TaskCreationOptions.AttachedToParent,將子任務(wù)附加進(jìn)父任務(wù),這樣子任務(wù)完成后,父任務(wù)才算完成。 });//等待父任務(wù)完成,再輸出字符串,如果沒有這個等待,這句話會先輸出 parent.Wait();Console.WriteLine("Outer has completed.");} View Code

?

轉(zhuǎn)載于:https://www.cnblogs.com/kiba/archive/2013/06/14/3134953.html

總結(jié)

以上是生活随笔為你收集整理的C#嵌套任务和子任务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。