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。但是我什么也没得到,我不能这样传递参数。什么好主意吗?
谢谢!
您需要附加一个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或锁定资源。