博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用async和wait进行异步编程
阅读量:5835 次
发布时间:2019-06-18

本文共 1582 字,大约阅读时间需要 5 分钟。

本文来源于,转载请注明出处

代码示例

// 要让一个方法成为异步方法:  //  - async修饰符.   //  - 返回类型是 Task 或者 Task
. 具体来说,如果函数没有return具体的值,则返回类型是Task,否则是Task
// 这里 AccessTheWebAsync返回了整数,所以它的返回类型是Task
// - 方法名后缀 "Async",显然这是一个约定async Task
AccessTheWebAsync() { HttpClient client = new HttpClient(); // GetStringAsync 返回Task
. 这意味着如果你await该task,你将获利一个string Task
getStringTask = client.GetStringAsync("http://msdn.microsoft.com"); // 这里可以做一些不依赖getStringTask返回值的工作 DoIndependentWork(); // await会挂起AccessTheWebAsync的执行线程,getStringTask执行完毕,AccessTheWebAsync 才能继续执行 string urlContents = await getStringTask; // 等待 AccessTheWebAsync 的方法会获取一个长度值 return urlContents.Length; }

这段代码来自,可以看到作为异步方法的AccessTheWebAsync也调用了异步方法GetStringAsync。

另外要注意:对异步的方法await调用只能在异步方法中,比如下边的代码在编译期间就会报错

class Program    {        static void Main(string[] args)        {            var t = AccessTheWebAsync();            string ret=await t;        }        async static Task
AccessTheWebAsync() { HttpClient client = new HttpClient(); Task
getStringTask = client.GetStringAsync("http://msdn.microsoft.com"); string urlContents = await getStringTask; System.Console.WriteLine("Caller done"); return urlContents; } }

正确的调用方式如下

static void Main(string[] args){    var t = AccessTheWebAsync();    t.Wait();    string r=t.Result;}

本文来源于,转载请注明出处

转载于:https://www.cnblogs.com/qzhforthelife/p/6744423.html

你可能感兴趣的文章
联想企业网盘张跃华:让文件创造业务价值
查看>>
记录一次蚂蚁金服前端电话面试
查看>>
直播源码开发视频直播平台,不得不了解的流程
查看>>
Ubuntu上的pycrypto给出了编译器错误
查看>>
聊聊flink的RestClientConfiguration
查看>>
在CentOS上搭建git仓库服务器以及mac端进行克隆和提交到远程git仓库
查看>>
測試文章
查看>>
Flex很难?一文就足够了
查看>>
【BATJ面试必会】JAVA面试到底需要掌握什么?【上】
查看>>
CollabNet_Subversion小结
查看>>
mysql定时备份自动上传
查看>>
17岁时少年决定把海洋洗干净,现在21岁的他做到了
查看>>
linux 启动oracle
查看>>
《写给大忙人看的java se 8》笔记
查看>>
倒计时:计算时间差
查看>>
Linux/windows P2V VMWare ESXi
查看>>
Windows XP倒计时到底意味着什么?
查看>>
运维工程师在干什么学些什么?【致菜鸟】
查看>>
Linux中iptables详解
查看>>
java中回调函数以及关于包装类的Demo
查看>>