如何写一个触发器? [英] How to write a Trigger?
本文介绍了如何写一个触发器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要如何处理这个问题?
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屋!
查看全文