异步编程设计模式Demo - AsyncComponentSample
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Threading; namespace AsyncProgramDemo
{
public class AsyncComponentSample : Component
{
public event Action<object, BreakEventArgs> Break; public event Action<object, DebugCompltedEventArgs> Completed; public void StartDebug()
{
AsyncOperation asyncOp = AsyncOperationManager.CreateOperation();
Action<AsyncOperation> exec = new Action<AsyncOperation>(Execute);
exec.BeginInvoke(asyncOp, null, null);
} private void Execute(AsyncOperation asyncOp)
{
Thread.Sleep();
SendOrPostCallback callback = new SendOrPostCallback(Callback);
asyncOp.Post(callback, );
Thread.Sleep();
SendOrPostCallback completedCallback = new SendOrPostCallback(CompltedCallback);
asyncOp.PostOperationCompleted(completedCallback, "completed");
} private void Callback(object lineNumber)
{
if (Break != null)
{
Break(this, new BreakEventArgs((int)lineNumber));
}
} private void CompltedCallback(object msg)
{
if (Completed != null)
{
Completed(this, new DebugCompltedEventArgs(msg.ToString()));
}
}
} public class BreakEventArgs : EventArgs
{
public int LineNumber; public BreakEventArgs(int lineNumber)
{
this.LineNumber = lineNumber;
}
} public class DebugCompltedEventArgs : AsyncCompletedEventArgs
{
public string Msg; public DebugCompltedEventArgs(string msg) : base(null, false, null)
{
this.Msg = msg;
}
}
}
异步编程设计模式Demo - AsyncComponentSample的更多相关文章
- 异步编程设计模式Demo - PrimeNumberCalculator
using System; using System.Collections; using System.Collections.Specialized; using System.Component ...
- 异步编程设计模式 - IronPythonDebugger
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsof ...
- [.net 多线程]异步编程模式
.NET中的异步编程 - EAP/APM 从.NET 4.5开始,支持的三种异步编程模式: 基于事件的异步编程设计模式 (EAP,Event-based Asynchronous Pattern) 异 ...
- 【温故而知新-万花筒】C# 异步编程 逆变 协变 委托 事件 事件参数 迭代 线程、多线程、线程池、后台线程
额基本脱离了2.0 3.5的时代了.在.net 4.0+ 时代.一切都是辣么简单! 参考文档: http://www.cnblogs.com/linzheng/archive/2012/04/11/2 ...
- .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)
本文内容 异步编程类型 异步编程模型(APM) 参考资料 首先澄清,异步编程模式(Asynchronous Programming Patterns)与异步编程模型(Asynchronous Prog ...
- C#秘密武器之异步编程
一.概述 1.什么是异步? 异步操作通常用于执行完成时间可能较长的任务,如打开大文件.连接远程计算机或查询数据库.异步操作在主应用程序线程以外的线程中执行.应用程序调用方法异步执行某个操作时,应用程序 ...
- [.NET] 怎样使用 async & await 一步步将同步代码转换为异步编程
怎样使用 async & await 一步步将同步代码转换为异步编程 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/6079707.html ...
- 多线程之异步编程: 经典和最新的异步编程模型,async与await
经典的异步编程模型(IAsyncResult) 最新的异步编程模型(async 和 await) 将 IAsyncInfo 转换成 Task 将 Task 转换成 IAsyncInfo 示例1.使用经 ...
- 多线程之异步编程: 经典和最新的异步编程模型, IAsyncInfo 与 Task 相互转换
经典的异步编程模型(IAsyncResult) 最新的异步编程模型(async 和 await) 将 IAsyncInfo 转换成 Task 将 Task 转换成 IAsyncInfo 示例1.使用经 ...
随机推荐
- jQuery插件autoComplete使用
安装/需要引入的文件 <script type="text/javascript" src="../js/jquery-1.8.3.min.js.js"& ...
- Android MVP模式 简单易懂的介绍方式
主要学习这位大神的博客:简而易懂 Android MVP模式 简单易懂的介绍方式 https://segmentfault.com/a/1190000003927200
- LeetCode_Climbing Stairs
ou are climbing a stair case. It takes n steps to reach to the top. or steps. In how many distinct w ...
- Linux企业级项目实践之网络爬虫(1)——项目概述及准备工作
我们在学习了Linux系统编程之后,需要一些实战项目来提高自己的水平,本系列我们通过编写一个爬虫程序,将我们学习的知识进行综合应用,同时在实现项目的过程中逐渐养成一些有用的思维方式,并具有初步的软件开 ...
- MVC4.0 Controller和View重复加载
项目完成以后总是感觉有一些页面跑起来特别的慢,就仔细的调试了下,发现有很多也买年都是走了两遍,页面加载的时候Controller和View会连续走了两次,没有一点缘由 查了很久也不知道什么原因,这个问 ...
- cf492D Vanya and Computer Game
D. Vanya and Computer Game time limit per test 2 seconds memory limit per test 256 megabytes input s ...
- 以Crypto++实现RSA加解密二进制数据
网上一大片讲怎么加解密字符串的,找了大半天也没找到讲加解密二进制数据的,于是自己研究了下,分享给大家. 加解密函数: #include <rsa.h> #include <randp ...
- iOS7 UI适配教程
最近写了点iOS7适配的文章,请指正 ios6to7 1 ios6to7 2
- php面向对象编程之构造方法__construct()
php中构造方法是对象创建完成后第一个被对象自动调用的方法.在每个类中都有一个构造方法,如果没有显示地声明它,那么类中都会默认存在一个没有参数且内容为空的构造方法. 构造方法的作用 通常构造方法被用来 ...
- wex5添加视频播放
我使用的播放器是ckplayer http://www.ckplayer.com/ ckplayer存放路,项目路径下: 方法一: 在monitor.w里加一个div标签 <div id=&qu ...