这是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'变量中的是什么?我知道,它们是函数参数,但是从事件发送给它们的是什么?
答案 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。
大多数情况下,你不会关注这些论点中的任何一个。你只关心在触发计时器时做某事,这样你就可以高兴地忽略传递给方法的参数。