.NET Framework的IAsyncResult接口的细节
请尊重原作者的工作,转载时请务必注明转载自:www.xionggf.com
概述 IAsynResult接口用来表征一个异步操作的结果。它的定义声明如下:
[System.Runtime.InteropServices.ComVisible(true)] public interface IAsyncResult { object AsyncState { get; } WaitHandle AsyncWaitHandle { get; } bool CompletedSynchronously { get; } bool IsCompleted { get; } } 有一些.NET Framework预定义的类是继承实现这个接口,如下:
AsyncResult SecurityTokenProvider.SecurityTokenAsyncResult AsyncResult Task CommittableTransaction 示例程序 接下来的示例演示了如何使用了IAsyncResult接口中的AsyncWaitHandle属性,去获取到一个WaitHandle类型的值,以及如何使用一个delegate去等待一个异步调用。当异步调用完成后,WaitHandle类型的返回值将会被赋值上。这示例由两个类组成,一个是包含了异步调用函数的类;另一个类则是包含了调用异步函数的方法。
using System; using System.Threading; namespace Examples.AdvancedProgramming.AsynchronousOperations { public class AsyncDemo { // 将要被异步执行的函数 public string TestMethod(int callDuration, out int threadId) { Console.WriteLine("Test method begins."); Thread.Sleep(callDuration); // 被异步执行的函数所在的线程休眠callDuration所指定的时间 threadId = Thread.CurrentThread.ManagedThreadId; // 拿到系统给本异步执行的函数分配的运行线程的id return String.