1. 程式人生 > >C#之入門總結_執行緒,委託,事件的關係_20

C#之入門總結_執行緒,委託,事件的關係_20

執行緒的使用:

執行緒一般和委託一起使用!

namespace Examination
{

//這是委託:平常我們的方法或者函式只能用來傳引數,有的時候一個方法可能需要另一個方法的支援,所以我們可以定義個委託來傳這個方法。
需要注意的是,委託和你所要傳的方法的返回值型別要一致。

    delegate void CountCarHandler(int number);
    delegate void BanStopCarHandler(int number);
    class CarCount
    {

//這是事件事件其實就是一個特殊的委託,對事件的聲名其實就是宣告一個私有的委託變數

        public event CountCarHandler handler;
        public event BanStopCarHandler banStopHandler;
        public void ExeCuteEvent(int number)
        {
            if (number > 190 && handler!=null)
            {
                handler.Invoke(number);
            }

            if (number == 200 && banStopHandler !=null)
            {
                banStopHandler.Invoke(number);
            }
        }
    }
}

namespace Examination
{
    class CountAlert
    {
        public void Alert(int number)
        {
            Console.WriteLine("還剩下{0}個車位",200-number);
        }

        public void BanStopCar(int number)
        {
            
            Console.WriteLine("車位已滿");
        }

    }
}

 public static void Task07()
        {
            CarCount cc = new CarCount();
            CountAlert ct = new CountAlert();

            cc.handler += ct.Alert;
            cc.banStopHandler += ct.BanStopCar;
            for (int i = 180; i <= 200; i++)
            {
                Thread.Sleep(100);
                cc.ExeCuteEvent(i);
            }
        }