不卡视频在线观看_三级网站视频在线观看_91精品网站_国产综合一区二区

完善主體資料,免費贈送VIP會員!
* 主體類型
* 企業名稱
* 信用代碼
* 所在行業
* 企業規模
* 所在職位
* 姓名
* 所在行業
* 學歷
* 工作性質
請先選擇行業
您還可以選擇以下福利:
行業福利,領完即止!

下載app免費領取會員

NULL

ad.jpg

二次開發教程:C# 弱事件

發布于:2019-07-25 15:11:28

網友投稿

更多

先看一個普通事件例子:

    class Program

    {

        static void Main(string[] args)

        {

            CarDealer dealer = new CarDealer();

            Consumer micheal = new Consumer("Micheal");

            dealer.NewCarInfo += micheal.NewCarIsHere;

            Consumer sebastian = new Consumer("Sebastian");

            dealer.NewCarInfo += sebastian.NewCarIsHere;

            dealer.NewCar("Ferrari");

            sebastian = null;

            GC.Collect();

            dealer.NewCar("Ferrari");//兩次輸出是相同的,說明sebastianb并沒有回收掉

            Console.ReadLine();

        }

    }


    public class CarInfoEventArgs:EventArgs

    {

        public CarInfoEventArgs(string car)

        {

            Car = car;

        }

        public string Car { get; private set; } 

    }


    public class CarDealer

    {

        public event EventHandler<CarInfoEventArgs> NewCarInfo;

        public void NewCar(string car)

        {

            Console.WriteLine("CarDealer, new car {0}", car);

            RaiseNewCarInfo(car);

        }

        protected virtual void RaiseNewCarInfo(string car)

        {

            if(NewCarInfo!=null)

            {

                NewCarInfo(this, new CarInfoEventArgs(car));

            }

        }

    }

    public class Consumer

    {

        private string _name = string.Empty;

        public Consumer(string name)

        {

            _name = name;

        }


        public void NewCarIsHere(object sender,CarInfoEventArgs e)

        {

            Console.WriteLine("{0}:Car {1} is new", _name, e.Car);

        }

    }




通過上面紅色字發現普通事件的垃圾回收是有一個問題的,當然這個是可以通過取消訂閱解決的,但是有沒有更智能一點的辦法呢?


下面看看弱事件的效果:


    class Program

    {

        static void Main(string[] args)

        {

            CarDealer dealer = new CarDealer();

            Consumer micheal = new Consumer("Micheal");

            GC.Collect();

            WeakCarInfoEventManager.AddListener(dealer, micheal);

            Consumer sebastian = new Consumer("Sebastian");

            WeakCarInfoEventManager.AddListener(dealer, sebastian);   

            dealer.NewCar("Ferrari");

            sebastian = null;

            GC.Collect();

            dealer.NewCar("Ferrari");//不再輸出sebastian的內容,說明sebastian已經回收了

            Console.ReadLine();

        }

    }


    public class CarInfoEventArgs : EventArgs

    {

        public CarInfoEventArgs(string car)

        {

            Car = car;

        }

        public string Car { get; private set; }

    }


    public class CarDealer

    {

        public event EventHandler<CarInfoEventArgs> NewCarInfo;

        public void NewCar(string car)

        {

            Console.WriteLine("CarDealer, new car {0}", car);

            RaiseNewCarInfo(car);

        }

        protected virtual void RaiseNewCarInfo(string car)

        {

            if (NewCarInfo != null)

            {

                NewCarInfo(this, new CarInfoEventArgs(car));

            }

        }

    }

    public class Consumer:IWeakEventListener

    {

        private string _name = string.Empty;

        public Consumer(string name)

        {

            _name = name;

        }

        public void NewCarIsHere(object sender, CarInfoEventArgs e)

        {

            Console.WriteLine("{0}:Car {1} is new", _name, e.Car);

        }

        public bool ReceiveWeakEvent(Type managerType, object sender, EventArgs e)

        {

            NewCarIsHere(sender, e as CarInfoEventArgs);

            return true;

        }

    }


    public class WeakCarInfoEventManager : WeakEventManager

    {

        private WeakCarInfoEventManager()

        {


        }

        public static void AddListener(object source,IWeakEventListener listener)

        {

            CurrentManager.ProtectedAddListener(source, listener);

        }

        public static void RemoveListener(object source,IWeakEventListener listener)

        {

            CurrentManager.ProtectedRemoveListener(source, listener);

        }

        

        public static WeakCarInfoEventManager CurrentManager

        {

            get

            {

                WeakCarInfoEventManager _currentManager = GetCurrentManager(typeof(WeakCarInfoEventManager)) as WeakCarInfoEventManager;

                if (_currentManager == null)

                {

                    _currentManager = new WeakCarInfoEventManager();

                    SetCurrentManager(typeof(WeakCarInfoEventManager), _currentManager);

                }

                return _currentManager;

            }

        }

        protected override void StartListening(object source)

        {

            (source as CarDealer).NewCarInfo += WeakCarInfoEventManager_NewCarInfo;

        }


        private void WeakCarInfoEventManager_NewCarInfo(object sender, CarInfoEventArgs e)

        {

            DeliverEvent(sender, e);

        }


        protected override void StopListening(object source)

        {

            (source as CarDealer).NewCarInfo -= WeakCarInfoEventManager_NewCarInfo;

        }

    }

本文版權歸腿腿教學網及原創作者所有,未經授權,謝絕轉載。

未標題-1.jpg

上一篇:二次開發教程:Revit開發之管道的布管系統配置

下一篇:二次開發教程:ICommand接口

60acb4e0ef112.png
不卡视频在线观看_三级网站视频在线观看_91精品网站_国产综合一区二区

      9000px;">

          不卡视频一二三四| 亚州成人在线电影| 偷拍日韩校园综合在线| 亚洲欧洲精品一区二区三区| 久久精品欧美一区二区三区不卡| 欧美日韩高清一区二区不卡| 日本电影亚洲天堂一区| 成人av在线观| 91在线视频播放地址| 91色.com| 欧美日本一区二区| 日韩三级伦理片妻子的秘密按摩| 国产午夜精品久久久久久免费视| 久久精品综合网| 欧美国产综合色视频| 亚洲欧洲一区二区三区| 亚洲第一福利视频在线| 日韩影院在线观看| 国产精选一区二区三区| 不卡的电影网站| 欧美美女bb生活片| 国产日韩av一区二区| 亚洲动漫第一页| 国产精品18久久久久久久久| 成人高清免费观看| 欧美日韩国产a| 国产精品色噜噜| 亚洲韩国精品一区| 丁香一区二区三区| 欧美日韩国产精选| 国产精品久久久久aaaa| 日本不卡1234视频| 欧美性xxxxxxxx| 亚洲欧洲精品一区二区精品久久久 | 日本中文字幕不卡| 色婷婷综合久久久| 亚洲国产成人午夜在线一区| 久久av资源网| 日韩欧美黄色影院| 亚洲国产毛片aaaaa无费看| 91黄色在线观看| 亚洲一区二区高清| 欧美丝袜自拍制服另类| 一区二区不卡在线播放| 99国产精品久| 亚洲蜜桃精久久久久久久| 91麻豆国产自产在线观看| 国产精品久久久久国产精品日日| 国产精选一区二区三区| 国产亚洲制服色| 91丨porny丨首页| 亚洲综合清纯丝袜自拍| 欧美色图片你懂的| 亚洲福利一区二区| 日韩欧美一区二区视频| 日韩激情av在线| 久久女同精品一区二区| 不卡的av网站| 亚洲成精国产精品女| 精品欧美乱码久久久久久1区2区| 蜜臀99久久精品久久久久久软件| 欧美一级电影网站| 国产成人综合在线观看| 亚洲日穴在线视频| 欧美大度的电影原声| 成人av网站大全| 蜜桃免费网站一区二区三区| 欧美成人video| 成人激情午夜影院| 肉色丝袜一区二区| 国产欧美一区二区精品性色超碰| 91免费看视频| 国产一区二区三区电影在线观看| 亚洲精品视频一区| 久久久777精品电影网影网 | 精品国产91乱码一区二区三区| 成人aa视频在线观看| 日韩电影在线观看网站| 亚洲欧洲精品一区二区三区| 欧美电影免费观看高清完整版 | 欧美日韩电影在线播放| 99久久国产综合色|国产精品| 日产国产高清一区二区三区 | 久久激五月天综合精品| 日本不卡在线视频| 亚洲综合视频网| 亚洲欧美乱综合| 亚洲国产成人自拍| 中文字幕免费观看一区| 久久精品一区二区| 久久久久成人黄色影片| 久久你懂得1024| 国产女人水真多18毛片18精品视频| 欧美一级高清大全免费观看| 欧美精品v国产精品v日韩精品| 日本高清视频一区二区| 欧美日韩国产高清一区二区三区| 91在线国产观看| 欧美精品第1页| 日韩午夜在线观看视频| 日韩一区二区中文字幕| 久久综合九色欧美综合狠狠| 国产亚洲精品aa| 一区二区三区影院| 日韩av成人高清| 国产米奇在线777精品观看| 99在线精品免费| 欧美三级电影网站| 日本一区二区视频在线观看| 精品欧美一区二区三区精品久久 | 椎名由奈av一区二区三区| 美脚の诱脚舐め脚责91| 91超碰这里只有精品国产| 一区二区三区精品在线| 在线观看不卡一区| 精品第一国产综合精品aⅴ| 欧美激情一区二区| 日本欧美加勒比视频| 99久久国产综合精品色伊| 欧美一区二区三区色| 悠悠色在线精品| 国产乱国产乱300精品| 欧美色图天堂网| 一区二区三区四区av| 国产精品亚洲第一区在线暖暖韩国| 色狠狠一区二区三区香蕉| 久久天堂av综合合色蜜桃网| 亚洲三级理论片| 不卡一区二区三区四区| 久久免费视频色| 美女一区二区久久| 欧美色倩网站大全免费| 亚洲丝袜美腿综合| 色哟哟欧美精品| 亚洲自拍偷拍九九九| 91丨九色丨蝌蚪富婆spa| 一区二区三区在线视频观看58| 色婷婷综合久久| 亚洲成a人片在线观看中文| 欧美精品色一区二区三区| 日韩精品91亚洲二区在线观看| 欧美日韩成人综合天天影院 | 国产成人精品亚洲日本在线桃色| 国产精品三级在线观看| 91福利精品第一导航| 天天综合天天综合色| wwwwww.欧美系列| 在线观看国产日韩| 男女性色大片免费观看一区二区 | 国产成人在线观看| 亚洲图片欧美一区| 国产欧美日韩一区二区三区在线观看 | 日本成人在线不卡视频| 中文无字幕一区二区三区| 欧美性三三影院| 成人网页在线观看| 美女视频一区在线观看| 亚洲最大的成人av| 国产精品免费视频一区| 色噜噜久久综合| 亚洲欧美另类小说| 欧美精品一二三四| 欧美一卡2卡3卡4卡| 日韩亚洲电影在线| 国产精品欧美经典| ...xxx性欧美| 午夜影院久久久| 久久99久久精品| 成人视屏免费看| 成人黄色在线网站| 高清久久久久久| 国产成人夜色高潮福利影视| 麻豆精品国产传媒mv男同| 麻豆精品精品国产自在97香蕉| 日韩精品乱码免费| 日本中文在线一区| 国产永久精品大片wwwapp| 狠狠色狠狠色综合| 国产91精品在线观看| 福利91精品一区二区三区| 懂色av中文字幕一区二区三区| 国产成人在线免费观看| 色综合久久天天| 91.麻豆视频| 久久久一区二区三区| 国产精品护士白丝一区av| 国产精品久久久久久福利一牛影视| 国产精品国产馆在线真实露脸| 国产精品国产三级国产三级人妇| 国产精品水嫩水嫩| 天堂成人免费av电影一区| 麻豆专区一区二区三区四区五区| 激情伊人五月天久久综合| 一本久久a久久精品亚洲| 久久伊99综合婷婷久久伊| 亚洲主播在线播放| 狠狠色狠狠色综合日日91app| 99国产精品久久久| 国产精品你懂的| 国产精品综合视频|