当前位置:编程学习 > C#/ASP.NET >>

请好心人回答俺的asp.net事件问题??

public class Alarm { private DateTime alarmTime; private int interval = 10; public event AlarmEventHandler AlarmEvent; public Alarm(DateTime time) : this(time, 10) { } public Alarm(DateTime time, int interval) { this.alarmTime = time; this.interval = interval; } public void Set() { while (true) { System.Threading.Thread.Sleep(2000); DateTime currentTime = DateTime.Now; if (currentTime.Hour == alarmTime.Hour && currentTime.Minute == alarmTime.Minute) { AlarmEventArgs args = new AlarmEventArgs(currentTime); OnAlarmEvent(args); if (! args.Snooze) return; else this.alarmTime = this.alarmTime.AddMinutes(this.interval); } } } protected void OnAlarmEvent(AlarmEventArgs e) { AlarmEvent(this, e); } } 下面程序中的事件如何和方法绑定的?代码中定义了AlarmEvent事件,OnAlarmEvent是这个事件绑定的方法吧?可是为什么没有使用AlarmEvent+=的形式绑定呢? 函数 OnAlarmEvent(AlarmEventArgs e)中的代码什么意思?
追问:感谢您的回答,这段代码是msdn上的,我的提问表达可能不清楚,我的疑问是:
在public void Set()函数中调用了 函数OnAlarmEvent(args); OnAlarmEvent 函数中代码只有一句:  AlarmEvent(this, e);
我感到困惑的是  AlarmEvent 被定义为一个事件,既然是个事件,就应该先用+=的形式绑定事件处理程序,对吧?可是整个程序中没有用+=的形式绑定事件处理程序的代码,那么 AlarmEvent(this, e);如何执行呢?
答案:OnAlarmEvent并不是这个事件绑定的方法,它只是触发了AlarmEvent事件,在你贴出的代码中没有定义事件处理程序,为一个事件定义事件处理程序必须用+=的形式绑定,OnAlarmEvent方法中的AlarmEventArgs e是表示方法中的参数,参数e的类型是AlarmEventArgs, AlarmEventArgs 是一个自定义类,你的代码是msdn上的吧?那一页上有对自定义类AlarmEventArgs 的详细代码,你去看看就知道了
其他:自定义事件要用委托的。如
public delegate void ShowEventHandler(ModelType ModelType, string ModelID);
 public delegate void EndedEventHandler(bool IsComplete);
/// <summary>
/// 每生成一个文件完成后,将执行的事件
/// </summary>
public event ShowEventHandler ShowGeneratedInfoEvent;
/// <summary>
 /// 每生成完成后,将执行的事件
 /// </summary>
        public event EndedEventHandler GenerateEnded;


if (ShowGeneratedInfoEvent != null)
                            {
                                ShowGeneratedInfoEvent(filemodel.ModelType, filemodel.ModelID);
                            }
if (GenerateEnded != null) GenerateEnded(true); 

上一个:asp.net动态显示问题
下一个:asp.net 控件的问题

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,