Delegate CallBack

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("===結束===");
        }
    }