zl程序教程

您现在的位置是:首页 >  其他

当前栏目

弱事件管理器及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...