async & await 异步编程小示例,一看就懂

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading;
 6 using System.Threading.Tasks;
 7
 8 namespace ConAppAsync
 9 {
10     class Program
11     {
12
13         //第一步,创建一个普通的耗时的方法
14         static string Greeting(string name)
15         {
16             Thread.Sleep(3000);
17             return String.Format("Hello, {0}", name);
18         }
19
20         //第二步,用一个异步方法包装上面的方法
21         static Task<string> GreetingAsync(string name)
22         {
23             return Task.Run<string>(() =>
24             {
25                 return Greeting(name);
26             });
27         }
28
29         //第三步,再创建一个能调用上面的异步方法的方法, 加关键字 async
30
31         private async static void CallWithAsync()
32         {
33             //some other tasks
34
35             string result = await GreetingAsync("王海滨");
36
37             //we can add multiple "await" in same "async" method
38             string result1 = await GreetingAsync("Ahmed");
39             string result2 = await GreetingAsync("Every Body");
40             Console.WriteLine(result+result1+result2);
41         }
42
43         static void Main(string[] args)
44         {
45             //最后在主入口调用上面的方法,和调用普通方法一样
46             CallWithAsync();
47             int length = 100;
48             for (int i = 0; i < length; i++)
49             {
50                 Console.WriteLine(i);
51             }
52             Console.ReadKey();
53         }
54     }
55 }
时间: 2024-08-26 22:27:32

async & await 异步编程小示例,一看就懂的相关文章

[C#] 开始接触 async/await 异步编程

开始接触 async/await 异步编程 序 之前已经整理了 4 篇关于 LINQ 的随笔,想换换口味. 目录 What's 异步? async/await 结构 What’s 异步方法? 一.What's 异步? 启动程序时,系统会在内存中创建一个新的进程.进程是构成运行程序资源的集合. 在进程内部,有称为线程的内核对象,它代表的是真正的执行程序.系统会在 Main 方法的第一行语句就开始线程的执行. 线程: (1)默认情况,一个进程只包含一个线程,从程序的开始到执行结束: (2)线程可以派

Async/Await 异步编程中的最佳做法

近日来,涌现了许多关于 Microsoft .NET Framework 4.5 中新增了对 async 和 await 支持的信息. 本文旨在作为学习异步编程的“第二步”:我假设您已阅读过有关这一方面的至少一篇介绍性文章. 本文不提供任何新内容,Stack Overflow.MSDN 论坛和 async/await FAQ 这类在线资源提供了同样的建议. 本文只重点介绍一些淹没在文档海洋中的最佳做法. 本文中的最佳做法更大程度上是“指导原则”,而不是实际规则. 其中每个指导原则都有一些例外情况

.NET 中的 async/await 异步编程

前言 最近在学习Web Api框架的时候接触到了async/await,这个特性是.NET 4.5引入的,由于之前对于异步编程不是很了解,所以花费了一些时间学习一下相关的知识,并整理成这篇博客,如果在阅读的过程中发现不对的地方,欢迎大家指正. 同步编程与异步编程 通常情况下,我们写的C#代码就是同步的,运行在同一个线程中,从程序的第一行代码到最后一句代码顺序执行.而异步编程的核心是使用多线程,通过让不同的线程执行不同的任务,实现不同代码的并行运行. 前台线程与后台线程 关于多线程,早在.NET2

Async await 异步编程说明

希望在编程上有些许提高所以 最近连续2篇博客都在说明多线程和异步编程的使用,异步和多线程之间区别请自行百度,因为理解不是特别透彻就不在叙述以免误导大家,这里写下新研究整理 task  和 await 的异步编程使用 调用子方法和耗时方法如下 /// <summary> /// 有返回值异步方法 /// </summary> /// <returns></returns> static async Task<int> HaveReturnAsync

async &amp; await 异步编程的一点巧方法

await 关键字不会创建新的线程,而是由Task任务或是FCL中的xxxAsync等方法创建的线程,而且这里创建的线程都是基于线程池创建的工作线程,属于后台线程. await关键字会阻塞/暂停调用它的方法,也即下面的 Phycology 方法.当阻塞其调用方法的时候,程序会回到UI线程中去执行,也就是main方法中去执行,这点可以通过 C#中 Thread,Task,Async/Await,IAsyncResult 的那些事儿! 其内的程序来判断. async & await 组合的程序片段一

async await 异步编程杂记

1. async 仅仅是用了标记 方法中有异步调用(就是有await...) 2  await  用来把「当前线程」中的代码“分成片”,通过一定条件和事件回调的形式  “依次执行”. 3. await并不是「阻塞」主线程,遇到 await ,主线程返回「线程池」 4. 内部用了Task,解决返回值,异常等问题. 5. 还有一些语法糖之类.Task的返回值只有 await之后得到.以前的是Task. 以上

Async异步编程入门示例

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace AsyncDemo 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 Console.WriteLine("异步方法测试开始!&quo

深入理解协程(四):async/await异步爬虫实战

本文目录: 同步方式爬取博客标题 async/await异步爬取博客标题 本片为深入理解协程系列文章的补充. 你将会在从本文中了解到:async/await如何运用的实际的爬虫中. 案例 从CSDN上批量爬取指定文章的标题.文章列表如下: urls = [ 'https://blog.csdn.net/Jmilk/article/details/103218919', 'https://blog.csdn.net/stven_king/article/details/103256724', 'h

async和await异步编程资源汇总

中文资料 使用 Async 和 Await 的异步编程 以上这篇文章是微软的,讲的很详细,还包括了大量的实验和实例代码,比如 演练:使用 Async 和 Await 访问 Web 如何:使用 Task.WhenAll 扩展异步演练 如何:使用 Async 和 Await 并行发起多个 Web 请求 取消一个异步任务或一组任务 在一段时间后取消异步任务 在完成一个异步任务后取消剩余任务 以及其他的资源链接,还有相应的英文版本,英文好的朋友可以直接看原版 除了微软的之外,Steve Cleary作为