C# 异步之Async/await

本文详细介绍了C#中Async/Await的关键字及其背后的异步编程概念。讲解了如何使用Async/Await进行异步调用,包括Task的ContinueWith方法,同步上下文的作用,以及异步操作可能导致的死锁问题和解决策略。重点讨论了async函数的返回类型,await的用法以及它们如何影响线程执行。
摘要由CSDN通过智能技术生成

该文章仅为个人理解,如有错误请指正,标红内容为重点,会有针对异步的多个文章,包含Task,APM(BeginInvoke,EndInvoke)等。

一、基本概念:

  • Async/await 关键字是在.Net 4.5引入的关键字来创建自动延续任务实现异步调用。
  • async/await是语法糖,等价于task.Run().ContinueWith(action,Task.FromCurrentSynchronizationContext())。
  • 延续:是.Net提供一种异步编程模式,用来代替阻塞、等待、轮询异步调用的操作。
  • Task的ContinueWith方法:在task任务完成后继续执行ContinueWith中的代码,除非指定线程,默认情况下ContinueWith中的代码在线程池中的线程运行。
  • Task.ContinueWith指定线程,由于ContinueWith中的代码需要在指定的线程运行例如更新UI控件必须在UI线程中执行,使用方法重载,传递TaskScheduler参数,TaskScheduler.FromCurrentSynchronizationContext()可以捕获调用线程同步上下文,可以保证ContinueWIth中的代码封送给指定的同步上下文。
  • 同步上下文:同步上下文的工作就是确保调用在正确的线程上执行。任何一方都可以提供一个执行的上下文,允许其他第三方向其封送调用。创建Form控件或Form时,会调用父类Control的构造函数会检查当前线程是否拥有同步上下文,如果没有则会安装WindowsFormsSynchronizationContext作为线程的同步上下文。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值