/// <summary>
/// 异步方法(无返回值)
/// </summary>
public static void M1()
{
Console.WriteLine("开始执行耗时的异步方法");
Thread.Sleep(5000);
Console.WriteLine("异步方法执行完毕");
}
/// <summary>
/// 异步方法(有返回值)
/// </summary>
/// <returns></returns>
public static string M2()
{
Console.WriteLine("开始执行耗时的异步方法");
Thread.Sleep(5000);
Console.WriteLine("异步方法执行完毕");
return "带返回值的异步方法执行完毕";
}
/// <summary>
/// 回调方法
/// </summary>
/// <param name="iar"></param>
public static void C1(IAsyncResult iar)
{
Console.WriteLine("执行回调方法");
}
/// <summary>
/// 无返回值的委托
/// </summary>
public delegate void D1();
/// <summary>
/// 有返回值的委托
/// </summary>
/// <returns></returns>
public delegate string D2();
public static void test1()
{
Console.WriteLine("开始执行主方法");
#region 执行无返回值的异步方法
D1 delegate1 = new D1(M1);
delegate1.BeginInvoke(new AsyncCallback(C1), null);//开启新的线程,执行异步方法
#endregion
#region 执行有返回值的异步方法
//D2 delegate2 = new D2(M2);
//IAsyncResult iar = delegate2.BeginInvoke(new AsyncCallback(C1), null);//开启新的线程,开始异步方法
//string result = delegate2.EndInvoke(iar);//获取异步方法的返回值(此时是阻止当前线程的,相当于同步)
//Console.WriteLine("异步方法返回的内容为---{0}", result);
#endregion
Console.WriteLine("主方法执行完毕");
Console.ReadLine();
}
无返回值异步方法执行结果:
有返回值异步方法执行结果: