如何以编程方式调用此方法? 如果我简单地做KillZombies(),它说我没有正确的参数,但我不知道当我只使用代码时要指定的参数...
public static void KillZombies(object source, ElapsedEventArgs e)
{
Zombies.Kill();
}
答案 0 :(得分:6)
你试过了吗?
KillZombies(null, null);
也许重构你的设计:
public static void KillZombies(object source, ElapsedEventArgs e)
{
//more code specific to this event, logging, whathaveyou.
KillSomeZombies();
}
public static void KillSomeZombies()
{
Zombies.Kill();
}
//elsewhere in your class:
KillSomeZombies();
答案 1 :(得分:3)
KillZombies(null, null);
但是,我会质疑这是否是一个好的设计。
答案 2 :(得分:3)
你必须创建参数并传递它们。为什么不直接调用函数将它放在另一个可供其他类调用的函数中?这将使整个设计更加简洁。
即。
internal void MakeZombiesKill()
{
Zombies.Kill();
}
答案 3 :(得分:1)
您的方法签名需要两个参数。你不能只调用KillZombies(),你需要将正确的参数传递给方法。
KillZombies(source, e);
如果您没有源或e,则只需传递null。
KillZombies(null, null);
答案 4 :(得分:0)
您通常使用您在其中调用方法的对象作为源(如果是静态则为null)。
并将ElapsedEventArgs设置为与方法相关的内容。对于ElapsedEventArgs,它将类似于:new ElapsedEventArgs() { SignalTime = DateTime.Now}
KillZombies(this, new ElapsedEventArgs() { SignalTime = DateTime.Now});
如果你没有在方法中使用source或e,你可以用null参数调用它。
KillZombies(null, null);
答案 5 :(得分:0)
从技术上讲,您应该从事件处理程序中分离出任务,并让事件处理程序调用包含您想要运行的代码的方法,这样您就可以调用该代码而不会使事件处理程序失效。但是,如果您想以编程方式跳过事件处理程序:
KillZombies(this, new ElapsedEventArgs())
然而,我会将其分解为经常使用的最佳做法...