/// <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();
}
無返回值異步方法執行結果:
有返回值異步方法執行結果: