(对象源,ElapsedEventArgs e)这是什么意思?

时间:2013-02-27 16:24:01

标签: c# xna

这是msdn。

的一个例子
public class Timer1
{
    public static void Main()
    {
        System.Timers.Timer aTimer = new System.Timers.Timer();
        aTimer.Elapsed+=new ElapsedEventHandler(OnTimedEvent);
        // Set the Interval to 5 seconds.
        aTimer.Interval=5000;
        aTimer.Enabled=true;

        Console.WriteLine("Press \'q\' to quit the sample.");
        while(Console.Read()!='q');
    }

    // Specify what you want to happen when the Elapsed event is raised.
    private static void OnTimedEvent(object source, ElapsedEventArgs e)
    {
        Console.WriteLine("Hello World!");
    }
}

我的问题是针对这一行:

private static void OnTimedEvent(object source, ElapsedEventArgs e)

隐藏在'源'和'e'变量中的是什么?我知道,它们是函数参数,但是从事件发送给它们的是什么?

3 个答案:

答案 0 :(得分:2)

好吧,source应该是调用事件的任何对象,在这种情况下似乎有些Timer

e应包含有关该事件的更多元信息。

例如,如果您有on-click事件,则...EventArgs可能会告诉您发生点击的坐标。

如果你正在使用Visual Studio,你可以输入类似e.的东西,然后intellisence应该告诉你那里的所有东西。

答案 1 :(得分:2)

Source是事件的 - 在这种情况下是计时器;而e包含与事件有关的信息。在这种情况下,ElapsedEventArgs:

http://msdn.microsoft.com/en-us/library/system.timers.elapsedeventargs_members(v=vs.80).aspx

另一个例子是winforms中文本框的keyDown事件 - e参数为您提供KeyCode,并让您确定用户是否为holidng Alt / Control等。

 txt_KeyDown(object sender, KeyEventArgs e)
 {
   if (e.KeyCode == Keys.Enter)
   ...

答案 2 :(得分:1)

source将成为计时器本身。 e会告诉您事件被触发的时间:ElapsedEventArgs

大多数情况下,你不会关注这些论点中的任何一个。你只关心在触发计时器时做某事,这样你就可以高兴地忽略传递给方法的参数。