Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ElapsedEventHandler事件后停止事件?_C#_Wpf_Timer - Fatal编程技术网

C# 如何在ElapsedEventHandler事件后停止事件?

C# 如何在ElapsedEventHandler事件后停止事件?,c#,wpf,timer,C#,Wpf,Timer,我正在wpf项目中使用计时器。间隔为5s。 如果在5秒内,我想在 已执行timer_Appeased,但未执行timer_Appeased方法。 我该怎么办 public main() { Timer timer=new Timer(5000); timer.Elapsed += new ElapsedEventHandler(timer_Elapsed); timer.start(); } private void timer_Elapsed(object

我正在wpf项目中使用计时器。间隔为5s。 如果在5秒内,我想在 已执行timer_Appeased,但未执行timer_Appeased方法。 我该怎么办

public main()
{
      Timer timer=new Timer(5000);
      timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
      timer.start();
}
private void timer_Elapsed(object sender, ElapsedEventArgs e)
{
   timer.Stop();
   Dispatcher.Invoke(DispatcherPriority.Normal, (Action)delegate()
   {  
   });
}

只需设置此
timer.stop()
timer.IsEnabled=false。两者都不会提升其已用函数。

您使用的是
系统.Timers.Timer
。如果要在
事件发生之前的
时间间隔内重新启动,请调用

timer.Stop();
timer.Start();


显然,要执行此操作,调用代码必须能够访问
timer
变量,因此您可能需要在类级别声明它。

我已更改了问题。将timer.AutoReset属性设置为true会导致许多问题,请不要这样做。当您需要调用Dispatcher.Invoke()时,使用此计时器毫无意义,它并不比DispatcherTimer()好。更糟糕的是。timer.stop可以停止计时器,但会执行timer\u。我不想让它执行。当计时器停止时,经过的事件不会发生。这就是让它停止的意义。如果希望计时器只出现一次,请不要在它之后调用Start(),也不要设置计时器的AutoReset属性。在你的问题中,你说的是“重新打开此计时器”-你不是指重新启动它吗?这是第一次:timer.appeased+=new ElapsedEventHandler(timer_appeased);timer.start();计时器将被执行,但我不想执行。很抱歉,我的英语太差了。我为您创建了几个示例(“因为我仍然无法100%理解问题”),可能以下选项之一有帮助:然后尝试
timer.stop
或设置其
timer.IsEnabled=false
timer.stop可以停止计时器,但timer_Expased将被执行一次。第一次:timer.Expased+=新的ElapsedEventHandler(timer_Expased);timer.start();计时器将被执行,但我不想执行。@zhchma:i did
timer timer=new timer(5000);timer.appeased+=新的ElapsedEventHandler(timer\u appeased);timer.Start();timer.Stop()。它甚至没有出现一次。计时器=新计时器(5000);timer.appeased+=新的ElapsedEventHandler(timer\u appeased);timer.Start();2秒后,如何停止计时器的运行。
timer.Enabled = false;
timer.Enabled = true;