C# 在c中的间隔时间后停止计时器

C# 在c中的间隔时间后停止计时器,c#,.net,visual-studio-2010,visual-studio,c#-4.0,C#,.net,Visual Studio 2010,Visual Studio,C# 4.0,我正在visual studio 2008中使用.net compact framework 3.5 我创建了一个计时器滴答声事件来执行作业。我只想调用计时器一次,然后我需要禁用计时器。请参阅下面的代码 int counter = 0; var timer = new Timer { Enabled = true, Interval = 10000 }; timer.Tick += delegate { Cleanup

我正在visual studio 2008中使用.net compact framework 3.5

我创建了一个计时器滴答声事件来执行作业。我只想调用计时器一次,然后我需要禁用计时器。请参阅下面的代码

   int counter = 0;
        var timer = new Timer { Enabled = true, Interval = 10000 };
        timer.Tick += delegate
        {
            Cleanup();
        };
        counter++;
        if (counter >= 1)
        {
            timer.Enabled = false;
        }
我尝试使用计时器。Enabled=false;在没有任何条件的情况下,发生的情况是清除函数没有调用,这是在tick事件中。因此,从谷歌我得到了另一个使用计数器的解决方案。使用计数器时,我也面临同样的问题,清除函数没有调用

如果我没有禁用计时器,则该函数每10秒调用一次。我只需要调用一次清除函数,它位于计时器内。勾选。需要帮助解决此问题


谢谢

您为什么需要柜台:

这应该足够了

timer.Tick += delegate
{
   timer.Enabled = false;
   Cleanup();
};

如果您正在使用System.Timers.Timer,则另一种方法-用于使其仅启动一次:

var timer = new System.Timers.Timer(10000) { AutoReset = false };
timer.Elapsed += (s,e)=>Cleanup();
timer.Enabled = true;

使用lambda的简短表示法:

var timer = new Timer { Enabled = true, Interval = 10000 };
timer.Tick +=()=>{ timer.Enabled=false; Cleanup();};

计数器++;应该包含在委托中,否则会立即调用它;请看一下这个解决方案,您可以将它用于您的案例:您可以指定您正在使用的计时器类吗。显然不是System.Threading.Timer,可能基于Tick方法…@AlexeiLevenkov它不是System.Threading.Timer。