一、
//声明的委托
public delegate void BoilerLogHandler(string status);
// 基于上面的委托定义事件
public event BoilerLogHandler BoilerEventLog;
//main方法
static void Main(string[] args)
{
BoilerInfoLogger filelog = new BoilerInfoLogger(@"E:\\boiler.txt");
DelegateBoilerEvent boilerEvent = new DelegateBoilerEvent();
boilerEvent.BoilerEventLog += new DelegateBoilerEvent.BoilerLogHandler(Logger); //Logger是委托的一个方法
boilerEvent.BoilerEventLog += new DelegateBoilerEvent.BoilerLogHandler(filelog.Logger); //filelog.Logger是委托的另一个方法;这条语句执行完后,委托有两个方法
boilerEvent.LogProcess();
Console.ReadLine();
filelog.Close();
}
//定义的事件的用法
BoilerEventLog(message); //BoilerEventLog是事件名,参数是委托(BoilerLogHandler)的对应方法的参数,委托的方法是
//BoilerInfoLogger.Logger和 RecordBoilerInfo.Logger
二、
WPF中InotifyPropertyChanged 的成员,用于数据变化后及时通知前台的方法(OnPropertyChanged)
PropertyChanged是定义的事件名
//继承InotifyPropertyChanged 后,自动实现的PropertyChanged接口
#region
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
//方式一和方式二的写法vs2015会提示可以简化代码,方式三就是简化后的代码
//方式一:
//PropertyChangedEventHandler handler = this.PropertyChanged;
//if (handler != null)
//{
// handler(this, new PropertyChangedEventArgs(propertyName));
//}
//方式二:
//if (PropertyChanged != null)
//{
// PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
//}
//方式三:
this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
//该条语句执行后,跳转到对应的方法去执行,例如:
//void ModelPropertyChanged(object sender, PropertyChangedEventArgs e)
//假设propertyName=‘IsPassed‘,则e.PropertyName=‘IsPassed‘
}
#endregion