/// <summary>
/// 定義委託
/// </summary>
/// <param name="user">使用者</param>
delegate void MakeStaticDelegate(string user);
/// <summary>
/// 這裡是測試靜態方法
/// </summary>
/// <param name="user">使用者</param>
private static void MakeStaticTest(string user)
{
for (int i = 0; i < 10; i++)
{
// 輸出當前的變數
System.Console.WriteLine(user + ":" + i.ToString());
System.Threading.Thread.Sleep(1000);
}
}
/// <summary>
/// 這裡是類比多使用者同時點擊並發
/// </summary>
public void DoTest()
{
//這裡非同步作業完成後調用的函數(AsyncCallback是個委託)
AsyncCallback asyn = new AsyncCallback(Success);
// 類比3個使用者的並行作業
MakeStaticDelegate makeStaticDelegate1 = new MakeStaticDelegate(MakeStaticTest);
makeStaticDelegate1.BeginInvoke("user1", asyn,"ss");
MakeStaticDelegate makeStaticDelegate2 = new MakeStaticDelegate(MakeStaticTest);
makeStaticDelegate2.BeginInvoke("user2", asyn, "ss");
MakeStaticDelegate makeStaticDelegate3 = new MakeStaticDelegate(MakeStaticTest);
makeStaticDelegate3.BeginInvoke("user3", asyn,"ss");
System.Console.ReadLine();
}
public void Success(IAsyncResult ar)
{
string ss=ar.AsyncState.ToString();//這獲得的ss就是 makeStaticDelegate1.BeginInvoke("user1", asyn,"ss");此方法的最後一個參數“ss”如果數對象要強轉
Console.Write("調用成功!");
}