C# 在定时器停止c时启用功能#
我猜这个问题已经被问了1000次了,但我不知道我做错了什么。我在C#中使用计时器。如果过期,则应将值设置为1以启用其他功能。我的意图是阻止一个函数,直到计时器滴答作响。如果计时器停止,则应启用新功能C# 在定时器停止c时启用功能#,c#,timer,C#,Timer,我猜这个问题已经被问了1000次了,但我不知道我做错了什么。我在C#中使用计时器。如果过期,则应将值设置为1以启用其他功能。我的意图是阻止一个函数,直到计时器滴答作响。如果计时器停止,则应启用新功能 using System.Timers; public float testNumber; private Timer timer; void Gearup () { if (currentGear < 5) { currentGear = current
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;
}
使用系统定时器;
公众浮点数;
私人定时器;
无效加速()
{
如果(当前档位<5){
currentGear=currentGear+1;
定时器=新定时器();
时间间隔=2000;
timer.AutoReset=true;
timer.Start();
testNumber=10;
}
如果(timer.Enabled!=false){
testNumber=1;
}
你们能帮帮我吗?每次我测试我的代码,测试编号都会立即设置为1。请温柔一点,我知道我
我是个笨蛋
更新问题:我的问题是,我的游戏角色应该在游戏中换档。换档后,不应允许该角色将其右后换档。这就是为什么我要在几秒钟内阻止换档功能。当计时器启动时
计时器。启用的
设置为true。然后你的程序跳转到t他
if (timer.Enabled != false) {
testNumber = 1;
}
阻塞。因为timer.Enabled不等于false它是true!您必须将其设置为
if (timer.Enabled == false) {
testNumber = 1;
//for timer restart use:
timer.Start();
}
或
因此,您需要以两秒的间隔启动计时器。当计时器过期时,您希望将变量testNumber设置为1。
这种情况只发生一次,然后停止 然后,您应该将AutoReset属性设置为false,并为经过的事件添加事件处理程序
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。请向我们展示整个方法。包括声明计时器变量的行。我真的不明白您试图实现什么。请告诉我们,可以吗编辑问题并阐明你的目的?有可能
计时器不是你真正想要的。@TotalNoob不要用很多行代码发表评论。你可以轻松地回答问题并格式化代码appropriately@Steve很抱歉,我更改了它,但Enabled=False仅在2秒后才会生效。将评估if在计时器触发第一个事件之前有很多时间,并且在任何情况下,Autoreset=True意味着它将永远不会被启用=False。@Steve您可以在if块中重新启动计时器。很高兴能提供帮助。作为该网站的新用户,我建议您阅读,如果您发现此处的所有或部分aswer都有帮助,请表示感谢。
testNumber = 10;
Timer timer = new Timer();
timer.Elapsed += (s, o) =>
{
Console.WriteLine("Timer elapsed");
testNumber = 1;
};
timer.Interval = 2000;
timer.AutoReset = false;
timer.Start();