C#中async和await用法

.net 4.5中新增了async和await这一对用于异步编程的关键字。

async放在方法中存在await代码的方法中,await放在调用返回Task的方法前。

    class Class1
    {
        private async void DoSomething()
        {
            await Do();
        }

        private Task Do()
        {
            return Task.Run(() => { Thread.Sleep(5000); });
        }

        [STAThread]
        static void Main(string[] args)
        {
            Class1 c = new Class1();
            c.DoSomething();
        }
    }
时间: 2024-10-11 21:10:37

C#中async和await用法的相关文章

ES6中的promise、async、await用法详解

<!DOCTYPE html> <html> <head> <title>Promise.async.await</title> </head> <body> <script type="text/javascript"> //promise用法(返回异步方法返回的数据,resolve获取数据成功后调用的方法, reject获取数据失败后调用的方法) //第一种写法 var p = new

浅谈async函数await用法

今天状态不太好,睡久了懵一天. 以前只是了解过async函数,并还没有很熟练的运用过,所以先开个坑吧,以后再结合实际来更新下,可能说的有些问题希望大家指出. async和await相信大家应该不陌生,让异步处理变得更友好. 其实这玩意儿就是个Generator的语法糖,想深入学习得去看看Generator,不然你可能只停留在会用的阶段. 用法很简单,看代码吧. // 先声明一个函数,这个函数返回一个promise, 先记住哈!后面很多地方要用 function getPromise(str =

ES6中async和await说明和用法

昨天看了一篇vue的教程,作者用async/ await来发送异步请求,从服务端获取数据,代码很简洁,同时async/await 已经被标准化,是时候学习一下了. 先说一下async的用法,它作为一个关键字放到函数前面,用于表示函数是一个异步函数,因为async就是异步的意思, 异步函数也就意味着该函数的执行不会阻塞后面代码的执行. 写一个async 函数 async function timeout() { return 'hello world';}  语法很简单,就是在函数前面加上asyn

c# async和await 用法(阻塞与不阻塞)

看示例吧: 1 void PagePaint() 2 { 3 Console.WriteLine("Paint Start"); 4 Paint(); 5 Console.WriteLine("Paint End"); 6 } 7 8 void Paint() 9 { 10 Rendering("Header"); 11 Rendering(RequestBody()); 12 Rendering("Footer"); 13

【转】【C#】C# 5.0 新特性——Async和Await使异步编程更简单

一.引言 在之前的C#基础知识系列文章中只介绍了从C#1.0到C#4.0中主要的特性,然而.NET 4.5 的推出,对于C#又有了新特性的增加--就是C#5.0中async和await两个关键字,这两个关键字简化了异步编程,之所以简化了,还是因为编译器给我们做了更多的工作,下面就具体看看编译器到底在背后帮我们做了哪些复杂的工作的. 二.同步代码存在的问题 对于同步的代码,大家肯定都不陌生,因为我们平常写的代码大部分都是同步的,然而同步代码却存在一个很严重的问题,例如我们向一个Web服务器发出一个

C# async 和 await 理解

C# async 和 await 理解 先假设如下场景: 主函数 Main,循环等待用户输入: 计算函数 Cal,耗时计算大量数据: class Test { static int Main(string[] args) { while(true) { // 等待用户输入 } } public static int Cal() { int sum = 0; for (int i = 0; i < 999; i++) { sum = sum + i; } Console.WriteLine($&quo

C# Task中的Func, Action, Async与Await的使用

在说Asnc和Await之前,先说明一下Func和Action委托, Task任务的基础的用法 1. Func Func是一种委托,这是在3.5里面新增的,2.0里面我们使用委托是用Delegate,Func位于System.Core命名空间下,使用委托可以提升效率,例如在反射中使用就可以弥补反射所损失的性能. Action<T>和Func<T,TResult>的功能是一样的,只是Action<T>没有返类型, Func<T,T,Result>:有参数,有返

[译] C# 5.0 中的 Async 和 Await (整理中...)

C# 5.0 中的 Async 和 Await [博主]反骨仔 [本文]http://www.cnblogs.com/liqingwen/p/6069062.html 伴随着 .NET 4.5 和 Visual Studio 2012 的 C# 5.0 ,我们可以使用的新的异步模式,这里涉及到 async 和 await 关键字.有许多不同点的观点,比起之前我们所看到的代码,它的可读性和实用性是否更加突出.我们将通过一个例子,看看它与当前的做法有何“与众不同”. 线性代码与非线性代码 大部分的软

C# 5.0中引入了async 和 await

C# 5.0中引入了async 和 await.这两个关键字可以让你更方便的写出异步代码. 看个例子: [csharp] view plaincopy public class MyClass { public MyClass() { DisplayValue(); //这里不会阻塞 System.Diagnostics.Debug.WriteLine("MyClass() End."); } public Task<double> GetValueAsync(double