在计时器停止时启用功能c#

时间:2017-06-10 14:01:49

标签: c# timer

我想这个问题已被问过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.请温柔,我知道我 我是个菜鸟。

更新问题:我的问题是,我的游戏角色应该在游戏中换档。一旦换档,角色就不能让它向后移动。这就是为什么我想阻止一个几秒钟的转速功能。

2 个答案:

答案 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();

}