如何在入口点使用异步等待(await)

众所周知(除了不知道的),C#5新增了一个异步等待的功能,用来来非常简单就能够实现异步等待 了。规则是这样的:

在调用异步方法前面加上await关键字,并且调用该异步方法的方法前面要 加上一个async关键字。

比如这样:

async void DoDelayAsync()
{
    await Task.Delay(999999999);
}

在进入DoDelayAsync方法时代码同步执行,直到遇到await运算符才会开始异步等待,在等待 任务执行完成之前,应用程序不会挂死,这用在用户界面上相当好,当代码在await处等 待异步操作完 成的过程中,用户依然可以操作界面上的其他元素。

以前,要做到这一点,通常需要从另一个线 程进行回调,使用委托来CallBack。如今使用await运算符就变得简单了N倍。

昨天晚上收到一 封垃圾邮件,确实是垃圾邮件,因为我是在垃圾箱中看到的一封未读信件。不知道是谁,反正连名字也 不敢报上来。他就提了这么个问题。

async static void Main(string[] args)
{
    await Task.Delay(8000);
    Console.Read();
}

这位仁兄非常强大,竟然在入口点也玩起了异步等待,我猜他当时的内心世界一定是姹紫嫣 红的,开心得无法形容,因为他即将发现新大陆,在入口点也能异步await。后来我想他的内心世界肯定 变成了残花败柳。我估计当他狠狠地按下F5后,发现了以下惊魂一幕。

显然呢,编 译器是不希望他发现新大陆,狠狠地给他以沉重打击。

是啊,在方法内部用await异步等待,那 调用的方法肯定要在前面加上async的,但是偏偏这个方法又是Main,你拿他没办法。这下可怎么办呢?

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索方法
, task await delay
, 运算符
, 前面
, await
, async
入口
此异步方法缺少await、c 异步 await、async await异步语法、异步async await、devexpress 异步await,以便于您获取更多的相关知识。

时间: 2024-09-17 04:54:11

如何在入口点使用异步等待(await)的相关文章

关于实时错误453:找不到DLL入口点

经过前几天的艰苦奋斗,我们的作品"飞聊"的基本功能已经实现,从现在开始进入窗口美化.调试.打包等阶段. 不过今天上午问题又来了,在给窗体实现换肤功能的时候,虽然添加了模块(其中也已经调用声明了相应的API),窗体中也添加了相应的代码,但在运行时弹出了 "实时错误'453':找不到DLL入口点SkinH_AttachEx in SkinH_VB6.dll"的对话框.如下图:   其实遇到这种问题,很可能是调用的函数与系统接口的问题,我在换肤的模块中声明的函数为: Pu

c语言-C语言,如何在一个函数内部,获取这个函数入口点的地址?

问题描述 C语言,如何在一个函数内部,获取这个函数入口点的地址? 1C # Git@OSC 的 Android 和 iOS 客户端全面开源 include #include void show(void* p) { printf(""%pn""p); } int main() { show(&show); show(show); return 0; } Output: 1 2 0x8048480 0x8048480 解决方案 答案处处有.函数名称就是入口地址

TLS隐藏的入口点

TLS简介 1. 什么是TLS? TLS是Thread Local Storage(线程局部存储)的简称,是一项解决多线程内部变量使用问题的技术.用于将某些数据和一特定线程关联起来,即,这些数据为关联线程所独有(私有).在多线程编程中, 同一个变量, 如果要让多个线程共享访问, 那么这个变量可以使用关键字volatile进行声明; 而如果一个变量不想被多个线程共享访问, 那么就应该使用TLS. 2. 如何使用TLS编程? TLS使用非常简单, 只要对变量声明时使用__declspec(threa

XX类库 不包含适合于入口点的静态“Main”方法

错误 1  程序"XXX\Client\Client.Model\obj\x86\Debug\Client.Model.exe"不包含适合于入口点的静态"Main"方法 Client.Model 原因:原来创建项目的时候,用的是"空项目",我以为这样就会生成类库,实际上,一开始准备运行的时候,就会提示以上错误. 解决方式:1.右键点类库属性 2.然后在输出类型选择"类库" 作者:kissazi2  出处:http://www.

程序不包含适合于入口点的静态“Main”方法

问题描述 usingSystem;namespacemyprogram{classprogram{voidPrintNums(){Console.WriteLine("123");Console.WriteLine("213.0");}}}这是我对着教材打的代码,为什么会有如标题的错误 解决方案 解决方案二:你把那个staticMain(string[]args){}给加上解决方案三:staticvoidMain(string[]args){} 漏了个void解决方

异常-无法在 DLL“advapi32.dll”中 入口点。

问题描述 无法在 DLL"advapi32.dll"中 入口点. 无法在 DLL"advapi32.dll"中找到名为"EventSetInformation"的入口点. 在安装完vs2015之后 在用2010编译项目时,一旦有数据库调用的情况(考虑是"mscorlib"这里有问题)就会产生 "无法在 DLL"advapi32.dll"中找到名为"EventSetInformation&

wince平台 嵌入式编程开发 无法在coredll.dll中找到FindWinow的入口点

问题描述 用vs2008搭建了wince平台进行手持终端开发,在WindowsCE5.0Emulator部署调试的时候出现"MissingManifestResourceException"错误,刚开始没有搭建wince平台时候运行exe文件或者调试提示"无法在coredll.dll中找到FindWinow的入口点".困扰了几天了--请大家帮忙解决,谢谢!!! 解决方案 本帖最后由 u013250515 于 2014-01-08 15:04:17 编辑解决方案二:模

根据个人长期链接经验提出3大做链接的入口点

摘要: 相信SEOer都知道链接资源是SEO的一条生命线,是衡量一个网站权重的重要性,链接不仅有助于把网站优化在搜索引擎的前几页,更直接的效益是能够带来流量. 纵观中国近几年互联网链 相信SEOer都知道链接资源是SEO的一条生命线,是衡量一个网站权重的重要性,链接不仅有助于把网站优化在搜索引擎的前几页,更直接的效益是能够带来流量. 纵观中国近几年互联网链接资源的开发及运用,从03.04年的留言板之类的垃圾链接资源:到07.08年的博客.论坛.书签.友情链接.维基百科:再到如今的SNS.社交.微

如何为WPF添加Main()函数 程序入口点的修改

一般的.WPF的Main()函数是自动生成的,不过有时候我们需要为我们的应用程序传参.那么自动生成的Main()函数就不会满足我们的要求.那么如何为WPF Application 设置Main()函数呢. 1.新建一个WPF项目 2.添加一个Program.cs类,代码如下: using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace WpfApplication1{st