`
omygege
  • 浏览: 1353031 次
文章分类
社区版块
存档分类
最新评论

基于事件的异步编程模式

 
阅读更多

上一篇中主要介绍了基于类型IAsyncResult的异步操作,这里将简单的介绍一下基于事件的异步编程模式,在.net中可以使用类BackgroundWorker来实现简单的基于事件的异步编程模式。该类型定义在System.ComponentModel命名空间中,定义如下:

public class BackgroundWorker : Component
{
// 当RunWorkerAsync 方法调用时,将执行DoWrok
public event DoWorkEventHandler DoWork;
// 当ReportProgress调用时将触发该事件
public event ProgressChangedEventHandler ProgressChanged;
// 后台执行线程完成之后调用
public event RunWorkerCompletedEventHandler RunWorkerCompleted;
// 其他方法
public void RunWorkerAsync(); // 开始执行异步操作
public void RunWorkerAsync(object argument); // 向DoWork事件传递参数
}

通常的使用方法如下:在DoWork中添加一个事件处理程序,在该事件处理程序中调用耗时的操作 ,调用 RunWorkerAsync启动才操作。如果想要得到当前的更新进度,在ProgressChanged事件处理程序中处理,如果想要接受操作完成的通知 ,在RunWorkerCompleted中处理。

注意在DoWork事件处理程序不能更新任何用户对象,可以在 ProgressChanged和RunWorkerCompleted和界面通信。一个MSDN简单示例:

View Code

分享到:
评论

相关推荐

    基于任务异步编程

    基于任务的异步编程Demo,[你必须知道的异步编程]——基于任务的异步模式中源码

    基于事件的异步模式 示例

    基于事件的异步模式进行多线程编程.根据MSDN示例改写,MSDN的示例太复杂.对刚接触的人来说,看起来有点头痛.所以精简了部分业务逻辑代码.让初学者只关心技术实现,不受复杂业务逻辑干扰.欢迎高手扔西红柿!

    异步编程:基于事件的异步编程模式(EMP)

    上一篇,我给大家介绍了“.NET1.0中基于IAsyncResult设计模式的异步编程模型(APM)”,它使用System.Threading命名空间的类来构造多线程应用程序。然而要想有效地使用这些工具类,需要有丰富的使用多线程软件工程的...

    c# 基于任务的异步编程模式(TAP)

    异步模式分为3种:异步模式、基于事件的异步模式和基于任务的异步模式(TAP)。TAP是利用关键字async和await实现的,本文将讲解TAP模式。async和await关键字只是编译器的功能。编译器最终会用Task类创建代码。 1、...

    .NET中基于事件的异步模式-EAP

    从.NET 4.5开始,支持的三种异步编程模式: 基于事件的异步编程设计模式 (EAP,Event-based Asynchronous Pattern) 异步编程模型(APE,Asynchronous Programming Model) 基于任务的编程模型(TAP,Ta

    异步编程:异步编程模型(APM)

     随着技术的发展,又在“.NET1.0异步编程模型(APM)”之后推出了“.NET2.0基于事件的编程模式”及“.NET4.X基于任务的编程模式”两种异步编程模式。尽管在新的设计上我们推荐都使用“.NET4.0基于任务的编程模式”...

    .NET中的异步编程-EAP/APM使用方法及案例介绍

    从.NET 4.5开始,支持的三种异步编程模式: •基于事件的异步编程设计模式 (EAP,Event-based Asynchronous Pattern) •异步编程模型(APM,Asynchronous Programming Model) •基于任务的编程模型(TAP,Task-...

    c# 基于任务的异步编程模式(TAP)的异常处理

    在前面讲到了《基于任务的异步编程模式(TAP)》,但是如果调用异步方法,没有等待,那么调用异步方法的线程中使用传统的try/catch块是不能捕获到异步方法中的异常。因为在异步方法执行出现异常之前,已经执行完毕。...

    异步通信模式CS示例源代码

    网络编程技术C#,基于vs2010,异步通信模式CS示例源代码

    TCPIP通讯程序的编写

    异步编程概述 讨论基于 IAsyncResult 的异步设计模式,此模式提供灵活的处理异步操作的编程模型。 使用 IAsyncResult 调用异步方法 ...介绍基于事件的异步模式,该模式提供使用事件进行跨线程通信的异步编程模型。

    inqscript:InqScript js-compiler 模块为 JavaScript 添加了基于任务的异步编程 (TAP) 模式的支持,并添加了 Await 表达式、异步函数和异步语句的语法

    脚本InqScript js-compiler 模块为 JavaScript 添加了支持基于任务的异步编程 (TAP) 模式,并添加了 Await 表达式、异步函数和异步语句的语法。

    基于windows的socket编程

    socket网络编程,没有选用线程模式,而是选用的异步的select模型。windows下的WSASelect模型,基于消息传递机制,实现了一个服务器和客户端,聊天

    关于socket的基于TCP协议的异步通信系统--TongXing.DLL

    最近做了一个关于socket的基于TCP协议的异步通信系统--TongXing.DLL;它里面封装了通信的一些比较复杂的方法:1:数据加密解密 2:数据失败自动重发 3:心跳模块 4:客户端网络问题断开自动重连 5:服务器自动拒绝...

    vc++ 线程同步与异步套接字编程实例

    vc++ 线程同步与异步套接字编程实例,Windows套接字在两种模式下执行I/O操作... Windows Sockets为了支持Windows消息驱动机制,使应用程序开发者能够方便地处理网络通信,它对网络事件采用了基于消息的异步存取策略。

    一个Win32 Socket的基于异步套接字多线程程序

    这是一个基于Windows Socket网络编程的一个Win32控制台程序,通过使用异步模式实现服务器端和客户端的通信,服务器端注册套接字读事件,负责在套接字上接收数据,客户端注册发送事件,负责向服务器端发送数据,

    基于WebClient的Ftp异步文件上传

    基于WebClient类的Ftp文件上传,使用方便,采用异步模式编程,可支持大文件,文件分包上传,可自定义包大小,代码有两种风格的形式:一个是类库版,一个是组件版 都在一起 效果一样!

    Rxjava 响应式编程

    响应式编程是一种基于异步数据流概念的编程模式。数据流就像一条河:它可以被观测,被过滤,被操作,或者为新的消费者与另外一条流合并为一条新的流。 响应式编程的一个关键概念是事件。事件可以被等待,可以触发...

    基于C#的socket编程的TCP异步的实现代码

    本篇阐述基于TCP通信协议的异步实现。 二、实验平台 Visual Studio 2010 三、异步通信实现原理及常用方法 3.1 建立连接  在同步模式中,在服务器上使用Accept方法接入连接请求,而在客户端则使用Connect方法来...

Global site tag (gtag.js) - Google Analytics