韦德国际1946英国 > 计算机网络 > 异步编程4,异步程序开发

原标题:异步编程4,异步程序开发

浏览次数:165 时间:2019-05-18

今后.Net Web 发中已开首推广异步方式编制程序,这对进步Web IO吞吐量带来了救助。

C# 异步编制程序四 async与await 异步程序支付,

随着C#异步程序支付连串的中肯,你会发觉编写异步程序尤其简单。事物的升高便是这么的规律,从轻松到复杂再到归纳。

在C# 5.0中大家得以经过async与await关键字贯彻急迅的异步程序开采,如下:

        static void Main(string[] args)
        {
            var task = GetResultAsyc();
            Console.WriteLine(String.Format("Main 线程:{0}", Thread.CurrentThread.ManagedThreadId));
            for (int i = 0; i < 100; i  )
            {
                Console.Write(".");
                Thread.Sleep(10);
            }
            Console.WriteLine();
            Console.WriteLine(String.Format("Main 线程:{0},获取异步执行结果:{1}", Thread.CurrentThread.ManagedThreadId, task.Result));

            Console.ReadLine();
        }

        private static async Task<int> GetResultAsyc()
        {
            Console.WriteLine(String.Format("线程:{0}", Thread.CurrentThread.ManagedThreadId));
            var result = await Task.Run(() => {
                Console.WriteLine(String.Format("Task 线程:{0}", Thread.CurrentThread.ManagedThreadId));
                Thread.Sleep(5000);
                return 10;
            });
            return result;
        }

异步编程4,异步程序开发。程序表达:

一、用 async 标注的艺术表示可以张开异步调用的法子,这种方法的称呼应当以Async结尾。

二、要是异步方法推行后有重回值,该异步方法的归来类型应该为Task<重临值的门类 TResult>。如若未有再次回到值,则应是Task。

三、在 async 标注的情势中能够张开Task或调用其余异步方法,在调用前使用 await 则调用线程将平昔回到并施行其后续代码。await 前边的被调用程序则在一个或五个(视嵌套的情况等要素而定)新线程中实行。

四、在新线程中的成效实践实现后,return result将由新线程肩负重回(此处并非再次回到调用线程,而是由新线程设置调用线程获取的Task.Result)。

5、在调用线程中应用 await Task 或 Task.Result 时,调用线程将等待(阻塞)新线程推行达成并赢得结果。

先后输出如下:

图片 1

跟我们以前介绍的同1,.Net Framework四.5自此有关的IO,Net等都已帮忙async和await调用,全数基于上述版本的C# 异步程序支付会简化不少。

现在.Net Web 发中已开始推广异步格局编制程序,那对增加Web IO吞吐量带来了声援。

异步编制程序类别小说起此就告一段落,本系列小说对于想系统精晓C#异步编制程序的恋人会有自然援助。作者深信不疑随着C#的迈入和盛开,C#定会绽放的特别五花8门。

异步编制程序四 async与await 异步程序开拓, 随着C#异步程序支付连串的中肯,你会意识编写异步程序特别轻便。事物的升高就是这样的法则,从...

异步编制程序体系作品到此就截止,本类别小说对于想系统了然C#异步编制程序的恋人会有自然援救。作者深信不疑随着C#的进化和绽放,C#定会绽放的特别绚丽。

先后输出如下:

        static void Main(string[] args)
        {
            var task = GetResultAsyc();
            Console.WriteLine(String.Format("Main 线程:{0}", Thread.CurrentThread.ManagedThreadId));
            for (int i = 0; i < 100; i  )
            {
                Console.Write(".");
                Thread.Sleep(10);
            }
            Console.WriteLine();
            Console.WriteLine(String.Format("Main 线程:{0},获取异步执行结果:{1}", Thread.CurrentThread.ManagedThreadId, task.Result));

            Console.ReadLine();
        }

        private static async Task<int> GetResultAsyc()
        {
            Console.WriteLine(String.Format("线程:{0}", Thread.CurrentThread.ManagedThreadId));
            var result = await Task.Run(() => {
                Console.WriteLine(String.Format("Task 线程:{0}", Thread.CurrentThread.ManagedThreadId));
                Thread.Sleep(5000);
                return 10;
            });
            return result;
        }

四、在新线程中的作用实行实现后,return result将由新线程担任重返(此处并非重返调用线程,而是由新线程设置调用线程获取的Task.Result)。

1、用 async 标注的措施表示可以开始展览异步调用的法子,这种艺术的名号应当以Async结尾。

先后表达:

本文由韦德国际1946英国发布于计算机网络,转载请注明出处:异步编程4,异步程序开发

关键词: 伟德1946

上一篇:系统下使用,Linux文件类型详解

下一篇:没有了