色女孩综合网_天天做天天添婷婷我也去 _日韩视频高清_草草影院免费

完善主體資料,免費贈送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
色女孩综合网_天天做天天添婷婷我也去 _日韩视频高清_草草影院免费

    亚洲国产小视频| 亚洲国产精品第一区二区三区| 在线日韩欧美视频| 亚洲一区二区三区在线播放| 欧美顶级少妇做爰| 在线成人免费视频| 久久国内精品视频| 国产日韩一区欧美| 羞羞色国产精品| 欧美性淫爽ww久久久久无| 亚洲高清在线观看| 久久午夜电影网| 国内精品久久久久伊人av| 性色一区二区三区| 国产一区二区三区四区hd| 亚洲制服少妇| 国产精品亚洲аv天堂网| 亚洲一区二区三区乱码aⅴ| 欧美视频国产精品| 亚洲午夜精品国产| 国产精品日韩在线观看| 香港成人在线视频| 国产日韩欧美三区| 久久久久久夜| 在线播放视频一区| 欧美成人精品1314www| 亚洲国产精品成人一区二区| 女女同性精品视频| 亚洲精品久久久久中文字幕欢迎你 | 亚洲一区自拍| 国产欧美69| 久热精品视频在线免费观看| 亚洲福利专区| 欧美视频精品一区| 欧美一区二区在线播放| 永久免费精品影视网站| 欧美高清在线视频观看不卡| 日韩手机在线导航| 国产精品视频在线观看| 久久婷婷国产综合国色天香 | 国产在线观看精品一区二区三区| 久久久久五月天| 亚洲精选视频在线| 国产精品一级二级三级| 久久资源av| 99精品热视频| 国产日韩精品久久久| 美女网站久久| 亚洲午夜女主播在线直播| 国产亚洲精品久| 欧美88av| 欧美在线欧美在线| 亚洲美女91| 国产一区二区三区的电影 | 亚洲一区欧美二区| 精品成人在线| 欧美视频一区在线观看| 久久精品视频免费| 9l国产精品久久久久麻豆| 国产伪娘ts一区| 欧美日韩精品久久久| 久久久久国产精品麻豆ai换脸| 亚洲国产日韩精品| 国产一区二区高清| 欧美视频网站| 欧美成人精品不卡视频在线观看| 亚洲欧美文学| 一级日韩一区在线观看| 一区视频在线播放| 国产嫩草一区二区三区在线观看| 欧美成人网在线| 久久久www成人免费精品| 亚洲午夜久久久久久久久电影网| 亚洲高清不卡在线| 国产一区二区av| 国产精品国产亚洲精品看不卡15| 欧美xart系列高清| 久久夜色精品国产| 久久se精品一区精品二区| 在线综合亚洲| 日韩亚洲欧美成人| 91久久线看在观草草青青| 国产一区视频观看| 国产精品一区二区你懂得| 欧美日韩精品中文字幕| 欧美电影专区| 欧美大片国产精品| 免费不卡在线观看av| 久久免费国产| 久久婷婷久久| 久久久久久久一区二区三区| 欧美在线观看视频一区二区| 亚洲综合视频一区| 亚洲欧美激情一区| 亚洲欧美一区二区三区久久| 亚洲无线观看| 亚洲欧美国产精品专区久久| 亚洲影院在线观看| 午夜精品美女久久久久av福利| 中文在线资源观看网站视频免费不卡| 亚洲精品日韩一| 日韩视频中文| 亚洲一二三区在线| 午夜伦理片一区| 午夜在线播放视频欧美| 欧美一区不卡| 久久久蜜桃精品| 免费欧美高清视频| 欧美日韩国产区一| 国产精品久久久久一区二区| 国产欧美91| 激情综合在线| 亚洲精品视频在线观看免费| 亚洲最新视频在线| 亚洲欧美日韩在线| 欧美一级片在线播放| 久久午夜视频| 欧美日韩免费观看一区| 欧美日韩在线不卡| 国产日韩1区| 亚洲二区视频在线| a4yy欧美一区二区三区| 亚洲欧美日韩一区二区| 久久人体大胆视频| 欧美精品一卡二卡| 国产精品一区二区三区乱码 | 欧美日韩成人一区二区三区| 欧美三级日韩三级国产三级| 国产日韩一区在线| 亚洲激情影视| 亚洲欧美制服另类日韩| 麻豆精品精品国产自在97香蕉| 欧美精品成人一区二区在线观看 | 国产欧美视频一区二区| 在线精品一区二区| 亚洲网址在线| 欧美成人资源| 国产欧美一区二区三区沐欲| 亚洲国产精品嫩草影院| 亚洲一区二区视频在线| 久久午夜电影| 国产精品福利网站| 亚洲黄色有码视频| 欧美亚洲综合在线| 欧美精品久久99| 国产一区二区三区黄| 一本色道综合亚洲| 久久综合伊人77777蜜臀| 国产精品电影网站| 亚洲激情一区二区| 午夜久久黄色| 欧美日韩另类视频| 亚洲国产成人不卡| 久久er99精品| 国产精品免费观看在线| 亚洲精品欧美一区二区三区| 久久久国际精品| 国产精品捆绑调教| 亚洲精品一二三区| 免费欧美在线| 国产自产v一区二区三区c| 一区二区三区你懂的| 欧美成人一区二区三区| 红桃av永久久久| 久久精品在线播放| 国产香蕉97碰碰久久人人| 一区二区三区欧美在线| 欧美华人在线视频| 在线看片一区| 久久色中文字幕| 国语精品一区| 久久精品国产亚洲一区二区| 国产伦精品一区二区三| 亚洲午夜免费视频| 欧美日韩专区在线| 一区二区三区欧美亚洲| 欧美伦理视频网站| 亚洲精品视频在线| 欧美另类综合| 一本色道久久综合亚洲二区三区| 欧美福利视频在线| 亚洲激情欧美| 欧美激情综合亚洲一二区| 亚洲欧洲另类| 欧美精品123区| 日韩写真视频在线观看| 欧美日韩精品免费观看视频| 一区二区三区精品久久久| 欧美日韩中文| 一本色道久久88综合亚洲精品ⅰ | 欧美日韩专区| 亚洲图色在线| 国产老肥熟一区二区三区| 先锋亚洲精品| 伊人蜜桃色噜噜激情综合| 麻豆精品精华液| 99在线精品观看| 国产精品亚洲成人| 久久国产日韩欧美| 亚洲大胆在线|