【专栏学习】APM——异步编程模型(.NET不推荐)

(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);
    }
}
原文地址:https://www.cnblogs.com/tangge/p/9147987.html