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);
}
}