如何改写用async/await写的方法

问题描述

由于async/await是.Net4.5关键字,现在想用.Net2.0实现同样的功能,该如何改写?这是一个定时器的启动方法。//启动PreciseTimerpublicasyncvoidStart(){if(running)return;running=true;Reset();timestamp=RawTicks+interval;while(running){//如果把下面的timestamp=RawTicks+interval放在此行,精确度会降低awaitTask.Delay(delay);while(RawTicks<timestamp)//其实连续调用Task.Delay(0)会比Thread.Sleep(0)和Thread.Yield()//花费的资源更多一些,只是Thread.Sleep(0)和Thread.Yield()都不是//「awaitable」的awaitTask.Delay(0);timestamp=RawTicks+interval;if(Elapsed!=null)Elapsed(this,eventArgs);}}

解决方案

解决方案二:

解决方案三:
改写起来费事了,不仅async,Task也是.NET4.0才有的。

时间: 2024-11-08 21:55:38

如何改写用async/await写的方法的相关文章

Node.js7/8中的async/await用法详解

Node.js 7 night中引入了async/await用法,但是在Node.js 8和Javascript V8才可能正式激活async/await函数. 什么是async/await?以前使用Promise是如何实现异步操作的,下面案例是展示如何使用Promise和Fetch API抓取数据的: function getTrace () {    return fetch('https://www.jdon.com', {     method: 'get'   }) } getTrac

Async/Await替代Promise的6个理由

译者按: Node.js的异步编程方式有效提高了应用性能;然而回调地狱却让人望而生畏,Promise让我们告别回调函数,写出更优雅的异步代码;在实践过程中,却发现Promise并不完美;技术进步是无止境的,这时,我们有了Async/Await. Node.js 7.6已经支持async/await了,如果你还没有试过,这篇博客将告诉你为什么要用它. Async/Await简介 对于从未听说过async/await的朋友,下面是简介: async/await是写异步代码的新方式,以前的方法有回调函

async / await:更好的异步解决方案

在实际开发中总会遇到许多异步的问题,最常见的场景接口请求之后一定要等一段时间才能得到结果,如果遇到多个接口前后依赖,那么问题就变得复杂.大家都一直在尝试使用更好的方案来解决这些问题.最开始只能利用回调函数,后来开始有人使用Promise的思维来搞定.到ES6中开始支持原生的Promise,引入Generator函数. 直到ES7,有了async/await. 这是一个用同步的思维来解决异步问题的方案. 我想很多人可能还不太分得清同步与异步的区别.如果你已经彻底了解了事件循环,那么想必对异步的概念

JavaScript 的 Async/Await 完胜 Promise 的六个理由

提醒一下各位,Node 现在从版本 7.6 开始就支持 async/await 了.如果你还没有试过它,这里有一堆带有示例的理由来说明为什么你应该马上采用它,并且再也不会回头. 貌似嵌入 gist 上的代码在 medium 原生 app 中不行,但是在移动浏览器上可以.如果你是在 app 中读本文,请点击共享图标,选择"在浏览器中打开",才看得到代码片段. Async/await 101 对于那些从未听说过这个话题的人来说,如下是一个简单的介绍: Async/await 是一种编写异步

async &amp; await 的前世今生

原文:async & await 的前世今生   async 和 await 出现在C# 5.0之后,给并行编程带来了不少的方便,特别是当在MVC中的Action也变成async之后,有点开始什么都是async的味道了.但是这也给我们编程埋下了一些隐患,有时候可能会产生一些我们自己都不知道怎么产生的Bug,特别是如果连线程基础没有理解的情况下,更不知道如何去处理了.那今天我们就来好好看看这两兄弟和他们的叔叔(Task)爷爷(Thread)们到底有什么区别和特点,本文将会对Thread 到 Tas

async &amp; await 的前世今生(Updated)

原文:async & await 的前世今生(Updated) async 和 await 出现在C# 5.0之后,给并行编程带来了不少的方便,特别是当在MVC中的Action也变成async之后,有点开始什么都是async的味道了.但是这也给我们编程埋下了一些隐患,有时候可能会产生一些我们自己都不知道怎么产生的Bug,特别是如果连线程基础没有理解的情况下,更不知道如何去处理了.那今天我们就来好好看看这两兄弟和他们的叔叔(Task)爷爷(Thread)们到底有什么区别和特点,本文将会对Threa

对[yield]的浅究到发现[async][await]

原文:对[yield]的浅究到发现[async][await] 上篇对[foreach]的浅究到发现[yield]写完后,觉得对[yield]还没有理解清楚,想起曾经看过一位大牛的帖子讲的很深刻(链接在此),回顾了下,在这里写出自己的理解,与各位分享. 一.通常的异步 现在我们假设一种平时经常遇到的情况,现有三个方法,其中funcOne和funcTwo比较耗时需要异步执行,而且他们的逻辑是必须在funcOne执行完后才可以执行funcTwo,同理funcTwo执行完后才能执行funcThree.

JavaScript 异步方案 async/await 实例教程

构建一个应用程序总是会面对异步调用,不论是在 Web 前端界面,还是 Node.js 服务端都是如此, JavaScript 里面处理异步调用一直是非常恶心的一件事情.以前只能通过回调函数,后来渐渐又演化出来很多方案,最后 Promise 以简单.易用.兼容性好取胜,但是仍然有非常多的问题.其实 JavaScript 一直想在语言层面彻底解决这个问题,在 ES6 中就已经支持原生的 Promise ,还引入了 Generator 函数,终于在 ES7 中决定支持 async 和 await .

如何在现有代码中通过async/await实现并行

一项新技术或者一个新特性,只有你用它解决实际问题后,才能真正体会到它的魅力,真正理解它.也期待大家能够多分享解一些解决实际问题的内容. 在我们遭遇"黑色30秒"问题的过程中,切身体会到了异步的巨大作用(详见从ASP.NET线程角度对"黑色30秒"问题的全新分析),于是开始逐步地用async/await改造现有代码. 今天早上在将一个MVC Controller中的Action改为异步的时候突然发现--其中有7个方法调用可以并行执行. public async Tas