如何在C#中进行异步暂停?

Ser*_*dov 0 .net c# loops visual-studio

我有一个用C#(Visual Studio)编写的程序,可以在托盘上运行.我希望它每10分钟做一次动作.我现在有以下代码:

while(true)
{
Thread.Sleep(10000);
// my stuff
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用.它冻结了一个程序.

Ghy*_*hal 6

您应该使用计时器对象而不是创建while循环.

System.Timers.Timer _timer = new  System.Timers.Timer();
_timer.Elapsed += new ElapsedEventHandler(_timer_Elapsed);
//30 seconds
_timer.Interval = 30000;
_timer.Start();

private void _timer_Elapsed(object sender, ElapsedEventArgs e)
{
    //do your logic
}
Run Code Online (Sandbox Code Playgroud)

  • System.Timer.Timer是System.Threading.Timer的包装器.此外,它派生自ComponentModel的Component类,这意味着它可以在Visual Studio的设计图面上使用(根据我的经验,这是一种罕见的用法).它的额外功能仅适用于Visual Studio设计界面.如果您没有使用设计表面,它只是有一个杂乱的界面供您使用. (2认同)