使用.NET 异步编程(2)

原创 2002年04月22日 09:39:00

异步委托<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

异步委托提供以异步方式调用同步方法的能力。当同步调用一个委托时,调用方法直接对当前线程调用目标方法。如果编译器支持异步委托,则它将生成该调用方法以及 BeginInvoke EndInvoke 方法。如果调用 BeginInvoke 方法,则公共语言运行库将对请求进行排队并立即返回到调用方。将对来自线程池的线程调用该目标方法。提交请求的原始线程自由地继续与目标方法并行执行,该目标方法是对线程池线程运行的。如果已经对 BeginInvoke 指定了回调,当目标方法返回时将调用它。在回调中,使用 EndInvoke 方法来获取返回值和输入/输出参数。如果没有对 BeginInvoke 指定回调,则可以在提交请求的原始线程上使用 EndInvoke

使用委托

对于异步编程,如果调用方使用一个委托,则该调用方在调用一个方法时必须定义该委托。在以下代码示例中,首先定义该委托,接着创建该委托的实例,然后调用它。下面的示例说明为异步调用 Factorize 方法定义一个模式的调用方:

编译器和公共语言运行库支持

当编译器发出 FactorizingCallback 委托类时(在按如下所示分析其定义后),它将使用异步方法签名以及 Invoke 方法生成 BeginInvokeEndInvoke 方法,如以下代码中所示:

编译器提供的委托 BeginInvoke 和 EndInvoke 方法

使用用户指定的委托签名,编译器应发出具有 InvokeBeginInvoke EndInvoke 方法的委托类。BeginInvoke EndInvoke 方法应被修饰为本机的。因为这些方法被标记为本机的,所以公共语言运行库在类加载时自动提供该实现。加载程序确保它们未被重写。

异步委托编程示例

以下代码通过求解某些数字因子的简单类阐释如何使用 .NET 异步编程。

总结

    上面是VS.NET中.NET异步编程方面的基本概念和示例代码,整理出来给大家参考一下。有任何建议请MAIL我 paulni@citiz.net

 

.Net 异步编程之Task

.NET里面的Task能够很方便地写出多线程的操作方法,比使用Thead类更加优雅。.NET 有一个组件-BackGroundWorker,也是支持异步编程的重要方面,在UI界面操作,需要等待较长时间...
  • afandaafandaafanda
  • afandaafandaafanda
  • 2015年01月20日 15:03
  • 745

C#异步编程之浅谈Task

上一篇讲到了.Net4.5新增的async和await关键字,其实async和await算是一组标记,真正实现异步操作的是Task新开的任务线程。什么是TaskTask是.Net4.0新增用来处理异步...
  • W_wjl1900
  • W_wjl1900
  • 2016年10月16日 21:47
  • 4287

.net4.5使用async和await异步编程实例

在.NET4.5中新增了异步编程的新特性async和await,使得异步编程更为简单。通过特性可以将这项复杂的工作交给编译器来完成了。之前传统的方式来实现异步编程较为复杂,这样对于程序猿来说处理起来比...
  • webczw
  • webczw
  • 2015年07月10日 17:02
  • 1768

异步编程(2)——.NET的异步编程模型

.NET中有一种异步编程模式——APM。就是我们经常看到的方法以BeginXXX和EndXXX开头,这样的方法都会执行异步的调用,掌握好APM对.NET编程会有很大的提高。APM支持三种聚集的技巧:等...
  • kittyjie
  • kittyjie
  • 2007年08月29日 12:59
  • 1159

谈谈c#中异步编程模型的变迁

大家在编程过程中都会用到一些异步编程的情况。在c#的BCL中,很多api都提供了异步方法,初学者可能对各种不同异步方法的使用感到迷惑,本文主要为大家梳理一下异步方法的变迁以及如何使用异步方法。 Beg...
  • github_33372103
  • github_33372103
  • 2015年12月14日 18:22
  • 299

.Net(C#)实现异步编程

最近编写了一个检查服务器集群的客户端程序,用于检查API接口是否可用,由于当时没有使用多线程技术,所有操作均在主进程中执行,这样就导致了2个问题: 1)由于要发送HTTP请求,导致主进程无响应,UI卡...
  • loophome
  • loophome
  • 2015年12月30日 12:20
  • 575

异步编程(2)——.NET的异步编程模型

APM支持三种聚集的技巧:等待直到完成,轮询和方法回调,下面追一介绍这几种技巧:1.等待直至完成using System;using System.IO;using System.Threading;...
  • aiaoliya0622
  • aiaoliya0622
  • 2007年11月19日 10:24
  • 410

使用.NET 异步编程(1)

使用 .NET 异步编程,在程序继续执行的同时对 .NET 类方法进行调用,直到进行指定的回调为止;或者如果没有提供回调,则直到对调用的阻塞、轮询或等待完成为止。例如,一个程序可以调用一个方法,该方法...
  • Paul_Ni
  • Paul_Ni
  • 2002年04月22日 09:39
  • 2654

C# 并行编程 之 异步编程模型

异步编程模型的使用
  • wangzhiyu1980
  • wangzhiyu1980
  • 2015年06月17日 09:21
  • 1099

.Net异步编程

1. 引言 最近在学习Abp框架,发现Abp框架的很多Api都提供了同步异步两种写法。异步编程说起来,大家可能都会说异步编程性能好。但好在哪里,引入了什么问题,以及如何使用,想必也未必能答的上来...
  • xiaobaitu389
  • xiaobaitu389
  • 2017年07月17日 09:28
  • 70
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用.NET 异步编程(2)
举报原因:
原因补充:

(最多只允许输入30个字)