delegate&event学习理解

一、  

//声明的委托

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

时间: 2024-11-05 12:07:41

delegate&event学习理解的相关文章

学习理解shell的好办法--编写自己的shell 之二

shell脚本的最简单形式就是一串命令的罗列,shell充当解释器,一条条挨个执行,直到最后一个或遇到退出命令.但这只能做很简单的事情,只是省区了每次都要敲一边命令的时间,要想完成更负责的功能,还要加上这些东西: 1.控制 前面的条件满足了,然后干什么:不满足,干什么. 2.变量 c=a+b, 用一种形式代表另一种形式,就是变量.因为形式不同了,就能用一种不变的表示另一种变化的.比如"编程语言"就可以当一个变量,可以赋值为"C语言","Perl语言&quo

Android中的context的学习理解

Android中Context的学习理解Context是一个抽象基类,通过它getResuources.getAssets and start 其他组件(Activity,Service,broadCast,getSystemService),可以这样理解:Context提供了一个运行环境for App, then app 可以访问资源,才能完成与其他组件,服务的交互,Context定义了一套基本的功能接口or一套规范 //todo

学习理解 makefile

学习理解 makefile 模拟个应用的例子: 有个工程包括头文件 001.h.002.h.003.h.004.h.005.h.006.h.007.h 共7个:程序文件 001.c.002.c.003.c.004.c.005.c.006.c.007.c.008.c.009.c.010.c 共10个文件.看着头大吧,先不关心具体内容. 现在来编译该工程.如下: # cd example/ # gcc 001.c 002.c 003.c 004.c 005.c 006.c 007.c 008.c 0

delegate, event - 里面涉及的参数类型必须完全一致,子类是不行的

public void TestF() { Test += Fun; } public void Fun(Person p) { }  // 如 Person变成 SubPerson,则报错..public void Fun(SubPerson p) { } public event Action<Person> Test; delegate, event - 里面涉及的参数类型必须完全一致,子类是不行的

学习理解shell的好办法--编写自己的shell 之一

本文参考自<Unix/Linux编程实践教程>, 这是一本讲解unix系统编程的书,注重实践,理解难度不大,推荐大家阅读,敲完本书后,对于理解unix系统如何运作会有更深的视角,回过头再学习别的 Linux相关的东西时,感受非常不一样,这是一本可以提高"内功"的书.自己加了些很菜的解释,以便其他小白理解,大牛直接飘过吧,错误之处希望指正. shell是一个管理进程和运行程序的程序,用来人和机器交互 常用的shell如sh,bash,zsh,csh,ksh等都有三个主要功能:

event学习

近期在学习saltstack的event模块,发现这个模块用处很大.于是乎将这个模块的知识总结下,方便后面学习使用. 原理:基于本地的zeromq pub和pull socket. 作用:(自己的理解) 1.结合returner用作审计. 2.结合reactor用作触发器. 3.用于第三方程序. 先在master上开启event监听,运行ipython,执行如下代码: import sys sys.path.append("/opt/app/salt/lib/python2.6/site-pac

Delegate&amp;Event

Delegate 1.基本类: 1 public class Student 2 { 3 public int Id { get; set; } 4 public string Name { get; set; } 5 6 public void Study() 7 { 8 Console.WriteLine("学习.net高级班公开课"); 9 } 10 11 public void StudyAdvanced(string name) 12 { 13 Console.WriteLi

深入学习理解java-ThreadLocal

导读 首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的.各个线程中访问的是不同的对象. 另外,说ThreadLocal使得各线程能够保持各自独立的一个对象,并不是通过ThreadLocal.set()来实现的,而是通过每个线程中的new 对象 的操作来创建的对象,每个线程创建一个,不是什么对象的拷贝或副本.通过ThreadLocal.set()将这个

c# delegate ,event

首先说明,event其实也是一种delegate,为了区分,我们称一般的delegate为"plain delegate". 写代码的过程中,经常会在delegate和event之间进行选择,以前也没仔细思考选择的原因,今天终于忍不住花了半天时间仔细琢磨了一下--好了,直接拿代码说话吧: using System;namespace EventAndDelegate{    public delegate void TestDelegate(string s);    public i