如何写一个触发器? [英] How to write a Trigger?

查看:102
本文介绍了如何写一个触发器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我需要如何处理这个问题?

  class MyClass {

ManualResetEvent mre;

public MyClass(){
mre = new ManualResetEvent(false);
Data = null;
}

public object Data {get;组; }

void DataSet(object sender,EventArgs e){
Console.WriteLine(object Data has been set。);
mre.Set();
}

}

代表似乎不是我需要的。一个事件,也许?如果这样做,我该怎么写?

  MyClass mc; 

void processA(){
mc = new MyClass();
mc.Data = GetDataFromLongProcess();
}


解决方案

 私有对象数据; 
public object Data {
get {return data;}
set {
if(value!= data){
data = value;
OnDataChanged();
}
}
}
protected virtual void OnDataChanged(){
EventHandler handler = DataChanged;
if(handler!= null)handler(this,EventArgs.Empty);
}
public event EventHandler DataChanged;

然后将任何代码挂接到 DataChanged 事件。例如:

  MyClass mc = ... 
mc.DataChanged + = delegate {
控制台。 WriteLine(new data!wow!);
};


I want my C# code to call an event whenever a value is assigned to my object.

How exactly would I need to go about that?

class MyClass {

  ManualResetEvent mre;

  public MyClass() {
    mre = new ManualResetEvent(false);
    Data = null;
  }

  public object Data { get; set; }

  void DataSet(object sender, EventArgs e) {
    Console.WriteLine("object Data has been set.");
    mre.Set();
  }

}

Delegates don't seem to be what I need. An event, maybe? How would I write such an event, if so?

MyClass mc;

void processA() {
  mc = new MyClass();
  mc.Data = GetDataFromLongProcess();
}

解决方案

private object data;
public object Data {
    get { return data;}
    set {
        if(value != data) {
            data = value;
            OnDataChanged();
        }
    }
}
protected virtual void OnDataChanged() {
    EventHandler handler = DataChanged;
    if(handler != null) handler(this, EventArgs.Empty);
}
public event EventHandler DataChanged;

then hook any code to the DataChanged event. For example:

MyClass mc = ...
mc.DataChanged += delegate {
    Console.WriteLine("new data! wow!");
};

这篇关于如何写一个触发器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆