(1)learning hard C#学习笔记
异步1:《learning hard C#学习笔记》读书笔记(20)异步编程
(2)《C# 4.0 图解教程》
22.4 异步编程模式
(3)《精通C#(第6版)》
19.2 .NET 委托的简短回顾
19.3 委托的异步性
19.4 异步调用方法
(4)《C#本质论(第3版)》
19.3 异步编程模式
知识点:异步返回结果 http://www.cnblogs.com/heyuquan/archive/2013/03/22/Asynchronous-Programming-Model.html
/// <summary>
/// APM 阻塞式异步响应
/// </summary>
public class Calculate_For_Break
{
public static void Test()
{
CalculateLib cal = new CalculateLib();
// 基于IAsyncResult构造一个异步API (回调参数和状态对象都传递null)
IAsyncResult calculateResult = cal.BeginCalculate(123, 456, null, null);
// 执行异步调用后,若我们需要控制后续执行代码在异步操作执行完之后执行,可通过下面三种方式阻止其他工作:
// 1、IAsyncResult 的 AsyncWaitHandle 属性,带异步操作完成时获得信号。
// 2、通过 IAsyncResult 的 IsCompleted 属性进行轮询。通过轮询还可实现进度条功能。
// 3、调用异步操作的 End*** 方法。
// ***********************************************************
// 1、calculateResult.AsyncWaitHandle.WaitOne();
// 2、while (calculateResult.IsCompleted) { Thread.Sleep(1000); }
// 3、
string resultStr = string.Empty;
int result = cal.EndCalculate(ref resultStr, calculateResult);
}
}