国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Task Parallel Library02,更進一步

2019-11-17 02:26:24
字體:
來源:轉載
供稿:網友

Task Parallel Library02,更進一步

在前一篇中,了解了Task的基本用法

如果一個方法返回Task,Task<T>,如何獲取Task的返回值,獲取值的過程會阻塞線程嗎?

        static void Main(string[] args)
        {
            var result = DoWorkAsync().Result;
            Console.WriteLine(result);
            Console.WriteLine("我會什么時候顯示");
            Console.ReadKey();
        }
        static Task<string> DoWorkAsync()
        {
            return Task<string>.Factory.StartNew(() =>
            {
                Thread.Sleep(3000);
                return "hello";
            });
        }

1

可見,Task的Result屬性可以獲取返回值,而且,獲取返回值的過程線程是被阻塞的。

是否可以不阻塞線程,又能拿到某個線程的返回值呢?ContinueWith方法在某個線程結束之后進行,但同時不會阻塞線程。

        static void Main(string[] args)
        {
            DoWorkAsync().ContinueWith((PRe) =>
            {
                Console.WriteLine(pre.Result);
            });
            Console.WriteLine("我會什么時候顯示");
            Console.ReadKey();
        }

2

但ContinueWith總會在某個線程結束之后進行,是否可以對ContinueWith的過程控制一下呢?

        static void Main(string[] args)
        {
            DoWorkAsync().ContinueWith((pre) =>
            {
                Console.WriteLine(pre.Result);
            }, TaskContinuationOptions.NotOnFaulted);
            DoWorkAsync().ContinueWith((pre) =>
            {
                Console.WriteLine(pre.Exception);
            },TaskContinuationOptions.OnlyOnFaulted)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 砀山县| 金昌市| 茂名市| 乌拉特后旗| 大丰市| 永福县| 临洮县| 阳谷县| 金平| 余姚市| 都安| 大石桥市| 钦州市| 长丰县| 诸暨市| 肥乡县| 怀来县| 始兴县| 吉安县| 铜梁县| 新昌县| 邵阳市| 鄄城县| 聂荣县| 磐安县| 泸西县| 龙门县| 安乡县| 祁连县| 南开区| 遵化市| 阿尔山市| 莆田市| 泰顺县| 清涧县| 新田县| 香港 | 濮阳县| 洱源县| 虎林市| 淳化县|