我想这个问题已被问过1000次,但我不知道我做错了什么。我在C#中使用了一个计时器。如果它到期,则应将值设置为1以启用其他功能。我的目的是阻止一个函数,直到计时器滴答为止。如果计时器停止,则应启用新功能。
using System.Timers;
public float testNumber;
private Timer timer;
void Gearup ()
{
if (currentGear < 5) {
currentGear = currentGear + 1;
timer = new Timer ();
timer.Interval=2000;
timer.AutoReset = true;
timer.Start();
testNumber = 10;
}
if (timer.Enabled != false) {
testNumber = 1;
}
你能帮助我吗?每当我测试我的代码时,测试编号立即设置为1.请温柔,我知道我
我是个菜鸟。
更新问题:我的问题是,我的游戏角色应该在游戏中换档。一旦换档,角色就不能让它向后移动。这就是为什么我想阻止一个几秒钟的转速功能。
答案 0 :(得分:1)
所以你需要以两秒的间隔启动一个计时器。当计时器过去时,您想要将变量 testNumber 设置为1 这只发生一次然后停止。
然后,您应将AutoReset属性设置为false,并为Elapsed事件添加事件处理程序
testNumber = 10;
Timer timer = new Timer();
timer.Elapsed += (s, o) =>
{
Console.WriteLine("Timer elapsed");
testNumber = 1;
};
timer.Interval = 2000;
timer.AutoReset = false;
timer.Start();
现在你不需要停下来检查任何东西。继续使用从Gearup方法退出的代码。在间隔期结束后,全局变量testNumber将设置为1。
答案 1 :(得分:0)
当您的计时器启动时,timer.Enabled
设置为true。然后你的程序跳进
if (timer.Enabled != false) {
testNumber = 1;
}
块。因为timer.Enabled 不等于 false,所以 true !你必须把它变成
if (timer.Enabled == false) {
testNumber = 1;
//for timer restart use:
timer.Start();
}
或
if (timer.Enabled != true) {
testNumber = 1;
//for timer restart use:
timer.Start();
}