弱事件管理器及WeakEventManager,IWeakEventListener的使用
事件 管理器 使用
2023-09-14 08:59:41 时间
CarDealer类发布事件,Consumer类(实现IWeakEventListener接口)订阅事件
实现代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; namespace ConsoleDelegate class Program static void Main(string[] args) CarDealer dealer = new CarDealer("Obama"); Consumer Jack = new Consumer("Jack"); WeakCarInfoEventManager.AddListener(dealer, Jack); dealer.NewCar("BMW"); Consumer Bidden = new Consumer("Bidden"); WeakCarInfoEventManager.AddListener(dealer, Bidden); dealer.NewCar("EAGLE"); public class CarInfoEventArgs : EventArgs public CarInfoEventArgs(string name) this.Car = name; public string Car { get; private set; } public class CarDealer private string name; public CarDealer(string name) this.name = name; public event EventHandler CarInfoEventArgs NewCarInfo; public void NewCar(string car) Console.WriteLine("{0}, New Car: {1}", name, car); NewCarInfo(this, new CarInfoEventArgs(car)); public class Consumer : IWeakEventListener private string name; public Consumer(string name) this.name = name; private void NewCarIsHere(object sender, CarInfoEventArgs e) Console.WriteLine("{0}, new car :{0} is here............", name, e.Car); bool IWeakEventListener.ReceiveWeakEvent(Type managerType, object source, EventArgs e) NewCarIsHere(source, e as CarInfoEventArgs); return true; public class WeakCarInfoEventManager : WeakEventManager public static void AddListener(object source,IWeakEventListener e) CurrentManager.ProtectedAddListener(source, e); public static void RemoveListener(object source, IWeakEventListener e) CurrentManager.ProtectedRemoveListener(source, e); public static WeakCarInfoEventManager CurrentManager WeakCarInfoEventManager manager = GetCurrentManager(typeof(WeakCarInfoEventManager)) as WeakCarInfoEventManager; if(manager ==null) manager = new WeakCarInfoEventManager(); SetCurrentManager(typeof(WeakCarInfoEventManager), manager); return manager; protected override void StartListening(object source) (source as CarDealer).NewCarInfo += CarDealer_NewCarInfo; public void CarDealer_NewCarInfo(object sender, CarInfoEventArgs e) DeliverEvent(sender, e); protected override void StopListening(object source) (source as CarDealer).NewCarInfo += CarDealer_NewCarInfo;
转载:http://blog.csdn.net/foreverling/article/details/38312927
服务器sever2008如何取消IE增强安全配置 安装WINDOWS server 系统以后,用浏览器打开网址时,系统总是提示“Internet Explorer 增强安全配置正在阻止下列网站的内容。如果把所有网址添加到信任列表是可以打开网址的,但是用起来很吃力。那么如何解决呢?
WPF程序中的弱事件模式 原文:WPF程序中的弱事件模式 在C#中,得益于强大的GC机制,使得我们开发程序变得非常简单,很多时候我们只需要管使用,而并不需要关心什么时候释放资源。但是,GC有的时并不是按照我们所期望的方式工作。 例如,我想实现一个在窗口的标题栏中实时显示当前的时间,一个比较常规的做法如下: var...
相关文章
- 【JavaScript】事件
- js中如何在不影响既有事件监听的前提下新增监听器
- window自定义事件
- IOS事件响应控制
- Flutter 陈航 23-事件循环 Event Loop 异步 线程 Isolate
- 事件对象——event
- 弱事件管理器及WeakEventManager,IWeakEventListener的使用
- 利用Object.defineProperty挂接set钩子,监控对象属性的修改事件
- Javascript 事件propagation机制
- picker 监听确定和取消事件demo效果(整理)
- uniapp input框监听回车搜索事件效果demo(整理)
- python web py入门(43)- jQuery 事件 - ready() 方法
- CrowdScore——crowdstrike 通过对事件打分 选择出critical、high、medium、low的事件 critical里又对事件进行了归类,用户可以高优先级处理
- 使用Azure Sentinel调查事件——用到了知识图谱能力
- HTML 事件的例子: