visual studio 2008 -不能在c#中创建运行函数的计时器

本文关键字:运行 创建 函数 计时器 2008 studio 不能 visual | 更新日期: 2023-09-27 17:53:42

这次我来向你们寻求计时器系统的帮助。我想应该是计时器)

我需要做一个计时器,每秒运行一个函数,到目前为止,这是我得到的:

 public class Game1 : Microsoft.Xna.Framework.Game 
 {
     Timer CooldownTracker;
     protected override void LoadContent()
     {
        CooldownTracker = new Timer();
        CooldownTracker.Interval = 1000;
        CooldownTracker.Start();
     }
     private void DecreaseCooldown(List<Brick> bricks)
     {
         foreach (Brick brick in bricks)
         {
            if (brick.Cooldown == 0)
                brick.Cooldown = 2;
            else
               brick.Cooldown--;
         }
     }
 }

…我如何使计时器运行的减少冷却(列表砖)功能?我试过用Timer。但是我什么也没得到,我不能这样传递参数。什么好主意吗?

谢谢!

visual studio 2008 -不能在c#中创建运行函数的计时器

您需要附加一个Timer Elapsed事件,如:

CooldownTracker = new Timer();
CooldownTracker.Elapsed += CooldownTracker_Elapsed; //HERE
CooldownTracker.Interval = 1000;
CooldownTracker.Start();    

,然后事件:

void CooldownTracker_Elapsed(object sender, ElapsedEventArgs e)
{
    DecreaseCooldown(yourList);
}

如果需要,可以使用Thread。由于ThreadPool的原因,它不是那么准确,但可以帮助。像

private bool run = true;

Thread timer = new Thread(Run);
timer.Start();

并定义Run

private void Run()
{
     while(run)
     {
         // Call function
            Thread.Sleep(1000); //Time in millis
     }
}

如果出现跨线程异常,请尝试使用for循环而不是foreach或锁定资源。

相关文章: