我是C#的初学者,很难理解C#中的事件.我读过的这本书(插图C#2008)给出了一个例子,我需要问一些事情,所以我将在这里通过代码并指出我不理解的事情.
public class MyTimerClass
{
public event EventHandler Elapsed;
private void OnOneSecond(object source, EventArgs args)
{
if (Elapsed != null)
Elapsed(source, args);
}
}
class ClassA
{
public void TimerHandlerA(object obj, EventArgs e) // Event handler
{
Console.WriteLine("Class A handler called");
}
}
class ClassB
{
public static void TimerHandlerB(object obj, EventArgs e) // Static
{
Console.WriteLine("Class B handler called");
}
}
class Program
{
static void Main( )
{
ClassA ca = new ClassA(); // Create the class object.
MyTimerClass mc = new MyTimerClass(); // Create the timer object.
mc.Elapsed += ca.TimerHandlerA; // Add handler A -- instance.
mc.Elapsed += ClassB.TimerHandlerB; // Add handler B -- static.
Thread.Sleep(2250);
}
}
Run Code Online (Sandbox Code Playgroud)
好的,现在在这里声明事件之后的行public event EventHandler Elapsed;
,private void OnOneSecond(object source, EventArgs args)我知道它之后的两行是检查事件是否包含方法,但是OnOneSecound用于什么?或什么时候叫它?或它的名字..它不是事件处理程序我猜对吗?什么是Elapsed和OnOneSecond?之间的关系?
对不起新手问题..并提前感谢:)
当需要调用事件时,MyTimerClass将在内部调用OnOneSecond方法.
这是大多数控件使用的常见模式,包括微软控件.
基本上你不需要检查事件是否在多个地方设置,你只需在这一个方法中执行它,然后在内部调用此方法来引发事件.
例如,我倾向于不将事件args传递给OnXXX方法.
public event EventHandler<EventArgs> SomeEvent;
protected virtual void OnSomeEvent()
{
if (this.SomeEvent !=null)
{
this.SomeEvent.Invoke(this,EventArgs.Empty);
}
}
Run Code Online (Sandbox Code Playgroud)
然后提高它
this.OnSomeEvent();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
333 次 |
| 最近记录: |