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

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

下載app免費領(lǐng)取會員

NULL

ad.jpg

二次開發(fā)教程:C# 弱事件

發(fā)布于:2019-07-25 15:11:28

網(wǎng)友投稿

更多

先看一個普通事件例子:

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

        }

    }




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


下面看看弱事件的效果:


    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的內(nèi)容,說明sebastian已經(jīng)回收了

            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;

        }

    }

本文版權(quán)歸腿腿教學網(wǎng)及原創(chuàng)作者所有,未經(jīng)授權(quán),謝絕轉(zhuǎn)載。

未標題-1.jpg

上一篇:二次開發(fā)教程:Revit開發(fā)之管道的布管系統(tǒng)配置

下一篇:二次開發(fā)教程:ICommand接口

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

      9000px;">

          欧美三级电影在线看| 欧美色综合网站| 91在线视频在线| 2021久久国产精品不只是精品| 亚洲精品写真福利| 99精品黄色片免费大全| 久久九九久精品国产免费直播| 美女国产一区二区三区| 日韩午夜小视频| 精品一区免费av| 久久久另类综合| 99久久精品免费精品国产| 亚洲欧美日韩在线不卡| 91视频国产资源| 一区二区国产盗摄色噜噜| 国产精品羞羞答答xxdd| 中文字幕欧美三区| 一本一道久久a久久精品| 亚洲精品videosex极品| 精品视频全国免费看| 日韩av在线免费观看不卡| 欧美一二区视频| 国产精品亚洲午夜一区二区三区 | 中文字幕在线不卡视频| 99亚偷拍自图区亚洲| 亚洲一区二区三区自拍| 日韩精品一区二区三区中文精品| 国产老妇另类xxxxx| 综合欧美一区二区三区| 欧美在线影院一区二区| 麻豆91小视频| 国产精品美女久久久久久久久| 91婷婷韩国欧美一区二区| 丝袜美腿高跟呻吟高潮一区| 精品国产sm最大网站| 91免费视频大全| 黑人巨大精品欧美一区| 亚洲精品乱码久久久久久| 日韩一区二区电影| 日本福利一区二区| 国产成人精品一区二区三区四区| 亚洲综合色网站| 国产农村妇女精品| 日韩欧美一二区| 欧美日韩免费高清一区色橹橹| 久88久久88久久久| 一区二区三区中文字幕精品精品| 日韩精品一区二区三区中文不卡| 色狠狠av一区二区三区| 欧美日韩视频一区二区| 精东粉嫩av免费一区二区三区| 综合激情成人伊人| 国产欧美日韩麻豆91| 欧美精选在线播放| 一本到高清视频免费精品| 国产一区二区在线电影| 视频一区二区不卡| 一区二区三区 在线观看视频| 日韩一区二区在线看| 日本伦理一区二区| 99精品在线免费| 成人午夜私人影院| 国产精品亚洲人在线观看| 欧美aaa在线| 蜜桃视频免费观看一区| 首页欧美精品中文字幕| 亚洲国产aⅴ成人精品无吗| 亚洲色图在线视频| 亚洲日本va午夜在线影院| 中文字幕高清一区| 国产精品免费久久| 一区视频在线播放| 日韩毛片精品高清免费| 亚洲婷婷综合色高清在线| 18欧美亚洲精品| 亚洲午夜一区二区三区| 亚洲成人av一区二区| 视频一区免费在线观看| 婷婷六月综合网| 美女脱光内衣内裤视频久久影院| 青青草97国产精品免费观看无弹窗版 | 黄网站免费久久| 久久福利视频一区二区| 狠狠久久亚洲欧美| 国产精品综合视频| 91一区二区三区在线观看| 91视频91自| 欧洲精品在线观看| 91精品免费在线| 久久夜色精品国产欧美乱极品| 久久精品视频一区二区| 国产精品国产三级国产专播品爱网 | 欧美在线视频全部完| 欧美性xxxxx极品少妇| 51午夜精品国产| 2022国产精品视频| 国产精品福利一区二区| 亚洲大片精品永久免费| 久久99国内精品| 成人免费视频国产在线观看| 91啪亚洲精品| 91精品欧美综合在线观看最新| 久久日一线二线三线suv| 久久在线观看免费| 国产日韩高清在线| 中文字幕免费一区| 国产精品高潮呻吟久久| 成人免费小视频| 亚洲黄色小视频| 一区二区三区日韩欧美精品| 亚洲少妇最新在线视频| 亚洲福利一区二区| 亚洲香蕉伊在人在线观| 亚洲成a人在线观看| 日精品一区二区| 成人一级片在线观看| 在线观看亚洲专区| 欧美肥妇bbw| 亚洲免费观看在线观看| 男女性色大片免费观看一区二区| 天堂一区二区在线免费观看| 狠狠色狠狠色合久久伊人| 国产91露脸合集magnet| av亚洲精华国产精华| 不卡一二三区首页| 欧美电影影音先锋| 日韩一区欧美小说| 成人一区在线观看| 日韩一级二级三级| 一区二区三区中文在线观看| 丁香桃色午夜亚洲一区二区三区| 欧美精品久久一区二区三区| 一区二区成人在线| 色香蕉久久蜜桃| |精品福利一区二区三区| 国内精品伊人久久久久av影院 | 中文字幕欧美激情| 国产一区二三区好的| 欧美刺激脚交jootjob| 丝袜诱惑亚洲看片| 欧美另类z0zxhd电影| 亚洲综合在线视频| 在线观看av一区| 亚洲免费av观看| 成人少妇影院yyyy| 一区二区中文字幕在线| 高清免费成人av| 国产精品视频一二三区 | 欧美日韩亚洲不卡| 一区二区三区在线播放| 在线看日本不卡| 亚洲一区二区三区小说| 欧美视频完全免费看| 亚洲精品日日夜夜| 欧洲av一区二区嗯嗯嗯啊| 一区二区在线免费观看| 91久久一区二区| 日韩激情视频网站| 欧美一区二区三区视频免费 | 亚洲色图在线视频| 91久久精品日日躁夜夜躁欧美| 欧美成人精品3d动漫h| 亚洲图片激情小说| 欧美日韩视频第一区| 美腿丝袜一区二区三区| 国产欧美一区二区精品婷婷| 成人午夜在线播放| 亚洲一区二区三区四区在线免费观看| 欧美日韩精品免费| 国产精品一区二区久久不卡 | 国产精品18久久久久久久久| 久久综合给合久久狠狠狠97色69| 日韩影院在线观看| 欧美精品黑人性xxxx| 午夜婷婷国产麻豆精品| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 午夜精品久久久久影视| 久久久久久夜精品精品免费| 91福利视频在线| 麻豆视频一区二区| 日韩欧美国产系列| 精品一区二区在线观看| 亚洲精品在线电影| 成人午夜激情视频| 中文字幕一区二区三区四区不卡| 一本色道久久综合亚洲91| 亚洲欧美国产77777| 91首页免费视频| 石原莉奈在线亚洲二区| 国产精品高清亚洲| 日韩免费视频线观看| 国产1区2区3区精品美女| 日韩av高清在线观看| 一区二区三区不卡视频 | 亚洲色图.com| 国产精品久久久久久久久搜平片| 一区二区欧美在线观看| 91浏览器在线视频| 成人av网站在线观看| av中文字幕不卡|