C# 基于事件的异步模式

33843fbf775af387a751d0b97772535f.png

点击蓝字 关注我们

开工大吉

ecca3f5dbf77c8d5225fa7cd6891ef8f.png

EventBasedAsyncPattern 方法使用了基于事件的异步模式。这个模式定义了一个带有 “Async” 后缀的方法。示例代码再次使用了WebClient 类。对于同步方法DownloadString,WebClient类提供了一个异步变体方法 DownloadStringAsync。当请求完成时,会触发 DownloadStringCompleted事件。使用此事件的事件处理程序,可以检索结果。DownloadStringCompleted事件类型为DownloadStringCompletedEventHandler。第二个参数是 DownloadStringCompletedEventArgs 类型。这个参数通过 Result 属性返回结果字符串:

private static void EventBasedAsyncPattern()
{Console.WriteLine(nameof(EventBasedAsyncPattern));using (var client = new WebClient()){client.DownloadStringCompleted += (sender, e) =>{Console.WriteLine(e.Result.Substring(0,100));};client.DownloadStringAsync(new Uri(url));Console.WriteLine();}
}

16c28c9f19305ced43d9d91206b1d5ee.png

使用 DownloadStringCompleted 事件,事件处理程序将通过保存同步上下文的线程来调用。在 Windows 窗体、WPF 和 UWP 中,这就是 UI 线程。因此,可以直接从事件处理程序中访问 UI 元素。与异步模式相比,这是该模式的一大优点。

76155cd5fff0e5b83c9234a2125fc4da.png

基于事件的异步模式和同步编程之间的区别在于方法调用的顺序;与同步方法调用相比,顺序颠倒了。调用异步方法之前,需要定义这个方法完成时发生什么。

往期推荐

·  C# 数据流

·  C# 类型系统

·  C# 面向对象的编程

·  C# 执行 SQL 语句

·  C# 连接数据库

·  C# 迭代器

0723d350dab6a4a86fec29062dddeaef.png

微信号 : sf-1738658853

111ba73cf5713c178b16f857d55bdd13.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/291740.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tomcat 下 Memcached 集群与 Terracotta 集群比较

总结:Terracotta 集群配置要比Memcached 集群简单,但Terracotta 集群启动的速度要比Memcached 集群慢,性能Terracotta 集群要比Memcached 集群好。但性能都好不过weblogic单机的性能!! Terracotta 集群效果图如下&…

IDEA简单配置教程

IDEA简单配置教程 ——做好前期配置工作,后期少走弯路。 创建模块(Module) 设置(Settings) 设置主题 窗体及菜单字体及大小 设置编辑区主题 通过插件(plugins)更换主题 设置鼠标滚轮修改字体大小 设置鼠标悬浮提示 设置自动导包功能 显示行号和方法间的分隔符 忽略…

MariaDB Spider 数据库分库分表实践 分库分表

分库分表一般来说,数据库分库分表,有以下做法:按哈希分片:根据一条数据的标识计算哈希值,将其分配到特定的数据库引擎中;按范围分片:根据一条数据的标识(一般是值)&#…

【树莓派】配置介绍

网络是个好东西,好多同学分享的博文,极大的方便我们学习,谢谢~ 1、初始化配置树莓派 装上新系统,连接到树莓派后,一切都是新的,需要配置树莓派的一些选项。 使用putty连接到树莓派后,输入指令su…

C语言之函数指针和函数的首地址

1、爆简单的代码 因为容易忘记,还是再记录一次吧。 2、展示结果 至于函数指针用法,一眼便知对于add和&add你应该这样理解,add是函数的首地址,它的类型是void (),&add表示一个指向函数add这个对象的地址&#x…

MFC中卡拉OK字体的定时器实现,使用DC的DrawText函数实现

1 void CTextView::OnTimer(UINT_PTR nIDEvent)2 {3 m_nWidth 5; // 在构造函数中初始化为 0;4 5 CClientDC dc( this );6 TEXTMETRIC tm;7 dc.GetTextMetrics( &tm );8 CRect rect;9 rect.left 0; 10 rect.top 200; 11 re…

WPF 基础控件之Window样式

WPF开发者QQ群: 340500857由于微信群人数太多入群请添加小编微信号yanjinhuawechat 或 W_Feng_aiQ 邀请入群需备注WPF开发者 PS:有更好的方式欢迎推荐。01—代码如下一、创建 Window.cs继承System.Windows.Window代码如下。在WPF自定义类库时需要注意在创…

ngModel 值不更新/显示

angular中的$scope是页面(view)和数据(model)之间的桥梁,它链接了页面元素和model,也是angular双向绑定机制的核心。 而ngModel是angular用来处理表单(form)的最重要的指令&#xff…

go获取项目内所有proto_gRPC学习之三:初试GO版gRPC开发

欢迎访问我的GitHubhttps://github.com/zq2599/blog_demos内容:所有原创文章分类和汇总,及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;本篇概览本文《gRPC学习》系列的第三篇,前文已准备好gRPC开发环境&#xf…

服务端架构中的“网关服务器”

这么一个场景:一个要承载高并发、具有高性能的后台服务,往往会有多个不同的应用服务。问题来了,你会怎样设计架构呢?如下图所示,为了共用一个稳定高效的网络处理功能,把所有服务写在一个进程里。接下来悲剧…

一起来庆祝 .NET 20 周年!

你知道吗?.NET 将要迎来 20 周年, 在 20 年前的 2002 年, 微软公布了下一代的软件、服务的愿景和路线,2 月 13 日,Visual Studio .NET 推出,.NET 开发平台的第一个版本正式向世界发布。而现在, .NET 6 成为统一的开发平台&#xf…

不固定图片宽高瀑布流_APP设计学习:瀑布流式的产品UI设计

看到好的APP产品UI设计,真是忍不住想要停留几秒,慢慢来欣赏。今天学堂君收集了近期不错的优质的APP设计作品,看起来极舒服的UI界面,分享给大家。这一期的重点学习:在APP界面设计当中,如何应用瀑布流式的布局…

【Blog.Core开源】网关自定义认证鉴权与传参

书接上文,上回咱们说到了《【Blog.Core开源】网关统一集成下游服务文档》,已经将多个下游服务统一集成到了网关里,并且也把接口文档Swagger给集成了,那今天就说一下认证和鉴权相关的话题。继续说下故事背景在平时开发的时候&#…

HDFS HA与QJM(Quorum Journal Manager)介绍及官网内容整理

问题导读1.HDFS HA与QJM解决了什么问题? 2.HDFS HA与QJM区别是什么? 3.在HA(两个namenode)架构下,如何访问hdfs文件?【使用QJM构建HDFS HA架构(2.2)】本文主要介绍HDFS HA特性,以及如何使用QJM(…

#时间预测算法_【时间序列】时序预测竞赛之异常检测算法综述

本文将介绍在时间序列预测相关问题中常见的异常检测算法,可以很大程度上帮助改善最终预测效果。异常分类时间序列的异常检测问题通常表示为相对于某些标准信号或常见信号的离群点。虽然有很多的异常类型,但是我们只关注业务角度中最重要的类型&#xff0…

监测利器cacti服务安装

1、Cacti原理及概述1Cacti是一款使用PHP语言开发的性能与流量监测工具。监测的对象可以是linux也可以是windows也可以是路由器交换机等网络设备主要基于SNMPsimple network managerprotocol简单网络管理协议来搜集cpu占用内存使用运行进程数磁盘空间网卡流量等各种网络数据。2实…

C#中的类型转换

前几篇文章中经常说到强制类型转换,就是可以将派生类对象强制转换为基类对象的做法或者通过as运算符进行的转换。今天我们就来一起简单了解复习下在C#中都有哪些类型的转换。要理解转换很容易,日常的开发编码过程中,由于变量类型的不同我们可…

linux之快速过滤文本的关键字以及快速过滤目录下的关键字

1、快速过过滤文本的关键字 cat file | grep 关键字 比如Android日志文件很长,需要过滤Exception,就可以用这个办法,如下图 2、快速过滤目录下的关键字 grep -r 关键字 比如我们在linux上看目录下哪些关键字段,好像开发工具里面的 find usag…

hadoop使用

2019独角兽企业重金招聘Python工程师标准>>> 框架简介 Hadoop使用主/从(Master/Slave)架构,主要角色有NameNode,DataNode,secondary NameNode,JobTracker,TaskTracker组成。 其中Nam…

bigint hive java类型_详解Apache Hudi如何配置各种类型分区

1. 引入Apache Hudi支持多种分区方式数据集,如多级分区、单分区、时间日期分区、无分区数据集等,用户可根据实际需求选择合适的分区方式,下面来详细了解Hudi如何配置何种类型分区。2. 分区处理为说明Hudi对不同分区类型的处理,假定…