Delegate CallBack
實驗Delegate CallBack的實作,玩完發現有點無聊XD”,就當作經驗累積吧XD。
只是不知道這樣循環呼叫會不會有什麼副作用就是了。
以下是完整程式碼可直接使用。
class Program
{
static void Main(string[] args)
{
Walk walk = new Walk(10);
delegateWalk delWalk = new delegateWalk(walk.Walking);
delWalk.BeginInvoke(walk.Foot, new AsyncCallback(walk.WalkingCallBack), null);
Console.ReadLine();
}
}
public class Walk
{
public int Count { get; set; } //行走步數
public string Foot { get; set; } //起始腳
public Walk(int value) { Count = value; Foot = "左腳..."; }
//開始走路
public void Walking(string foot)
{
if (Count > 0)
{
Count--;
Console.WriteLine(foot);
Thread.Sleep(1000);
}
}
//callback,當Walking 執行完的時候會呼叫的程式
public void WalkingCallBack(IAsyncResult result)
{
delegateWalk del_walk = (delegateWalk)((AsyncResult)result).AsyncDelegate;
del_walk.EndInvoke(result);
Console.WriteLine("右腳...");
Thread.Sleep(1000);
if (Count > 0)
del_walk.BeginInvoke(Foot, new AsyncCallback(WalkingCallBack), null);
else
Console.WriteLine("===結束===");
}
}