计时器.已用回调未被触发
本文关键字:回调 计时器 | 更新日期: 2023-09-27 18:20:16
编辑:我缩短了代码示例
我正在用 C# 编码,试图设置一个计时器。我以前做过,但这次它根本不起作用。我翻看了无数遍,找不到哪里不对!请帮忙!
计时器应该在 RestoreMana(( 方法中启动,但似乎没有。然后,计时器应每隔一秒(1000 毫秒(运行一次 restoreTimer_Elapsed((。情况似乎也并非如此。
此代码适用于泰拉瑞亚插件并使用其中的软件包,但计时器来自 System.Timers。那么有人可以帮忙吗?:D谢谢!
ALT Pastebin 链接:http://pastebin.com/WU7j3aqe
//'Import' necessary packages
using System;
using TShockAPI;
using Terraria;
using TerrariaApi.Server;
using System.Timers;
namespace Restore
{
//Variables
private Timer restoreTimer = new Timer(1000);
public override void Initialize()
{
//Calls CallRestore() when /restore is typed
Commands.ChatCommands.Add(new Command("fmg.restore", CallRestore, "restore"));
//Setup the Timer
restoreTimer.Elapsed += new ElapsedEventHandler(restoreTimer_Elapsed);
restoreTimer.Interval = 1000;
restoreTimer.AutoReset = true;
restoreTimer.Enabled = false;
}
//There would usually be more code here but I shortened it
private void CallRestore(CommandArgs args)
{
RestoreMana(args);
}
//This doesn't get run
private void restoreTimer_Elapsed(object sender, ElapsedEventArgs e)
{
player.SendMessage("Timer", Color.Aqua);
}
//Starts restoreTimer
private void RestoreMana(CommandArgs args)
{
restoreTimer.Start();
}
}
}
注意:我希望你现在在大约 1 个月前问这个问题时就想出了这个问题。
无论如何,正如评论中所述,我会说您的问题似乎出在这条线上:
restoreTimer.Enabled = false;
应该是:
restoreTimer.Enabled = true;
。除非您在调用 restoreTimer.Start(( 之前在其他地方设置此布尔值;