.net自定義事件,經典簡單實例代碼


1,新建一個控制台應用程序TestDelegate,本項目主要實現:熱水器加熱,報警器監控,當熱水溫度達到80度的時候報警器報警這樣一個簡單的事件處理程序

2,定義委托處理程序

public delegate void PlayGameHandler(object sender, System.EventArgs e);

3,添加一個報警器類,報警方法只有在溫度超過80度的時候會被調用

// 負責報警的人
    public class 報警器
    {
        public 報警器()
        {
            Console.WriteLine("生成報警器...");
        }
        public void 報警(object sender, EventArgs e)
        {
            System.Threading.Thread.Sleep(100);//休息0.1秒
            Console.WriteLine("滴滴。。。。溫度超過80度...");
        }
    }

4,添加一個熱水器類,利用循環加熱熱水器,從一度增加到100度,當溫度超過80度時候觸發事件報警

// 如果加熱,則引發事件
    public class 熱水器
    {
        // 先定義一個事件,這個事件表示“熱水器”在加熱。
        public event PlayGameHandler PlayGame;
        public 熱水器()
        {
            Console.WriteLine("生成熱水器....");
        }

        public void 加熱()
        {
            Console.WriteLine("開始加熱了....."); 
            System.EventArgs e = new EventArgs();
            for (int i = 1; i < 101;i++)//溫度每增加一度調觸發一次事件
            {
                System.Threading.Thread.Sleep(100);//休息0.1秒
                Console.WriteLine(i.ToString()+"");
                if (PlayGame != null)
                {
                    if(i>=80)//當溫度大於80度
                    PlayGame(this, e);//觸發事件
                }
            }

        }
    }

5,客戶端開始調用

public class Program
    {
        //[STAThread]
        public static void Main(string[] args)
        {
            Console.WriteLine("場景開始了....");
            報警器 w = new 報警器();
            熱水器 z = new 熱水器();

            // 指定監視
            z.PlayGame += new PlayGameHandler(w.報警);
            System.Threading.Thread.Sleep(1000);
            // 開始加熱
            z.加熱();
            Console.WriteLine("場景結束...");
            Console.ReadLine();
        }

    }

6,運行后結果如圖:

。。

。。

。。

。。

大功告成,希望能為大家帶來幫助,有什么問題可以溝通聯系shixudong3@yeah.net,謝謝


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM