Welcome 微信登录

首页 / 网页编程 / ASP.NET / 浅谈.NET下的多线程和并行计算(十一).NET异步编程模型基础 下

浅谈.NET下的多线程和并行计算(十一).NET异步编程模型基础 下2011-08-03 博客园 lovecindywang上次我们说了,要进行多线程编程,我们可以使用最原始的方式也是最灵活的方式进行,那就是 Thread(ThreadPool)+信号量+ 锁+Control.Invoke。.NET的异步编程模型给我们提供了一种基于 IAsyncResult的编程模式,它尤其适用于处理下面的应用场景:

1) 被阻止,正在等待一个 IAsyncResult

2) 被阻止,正在等待多个 IAsyncResult 对象

3) 轮询 IAsyncResult 上的完成情形

.NET还提供了基于事件的异步编程模式,它能够提供:

1) 后台执行耗时任务(例如下载和数据库操作),但不会中断应用程序

2) 同时执行多个操作,每个操作完成时都会接到通知

下面是一个符合基于事件的异步编程模式的类:

public class AsyncExample
{
public int Method1(string param);
public void Method2(double param);

public void Method1Async(string param);
public void Method1Async(string param, object userState);
public event Method1CompletedEventHandler Method1Completed;

public void Method2Async(double param);
public void Method2Async(double param, object userState);
public event Method2CompletedEventHandler Method2Completed;

public void CancelAsync(object userState);

public bool IsBusy { get; }
}