-2
编辑:我缩短了代码示例Timer.Elapsed回调未被触发
我在C#中编码,试图设置一个计时器。 我以前做过,但这次完全没有工作。 我已经浏览过无数次,找不到最新的错误! 请帮忙!
计时器应该在RestoreMana()方法中启动,但似乎没有。 计时器应该每隔一秒钟运行一次restoreTimer_Elapsed()(1000毫秒)。 这似乎也并非如此。
此代码适用于Terraria TShock插件并使用它的软件包,但计时器来自System.Timers。所以任何人都可以请帮忙? :D 谢谢!
ALT引擎收录链接: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();
}
}
}
方式太多的代码。但我想你从来没有启用你的计时器。 – Dirk 2014-08-31 08:35:20
@Dirk只有一次。检查代码是否执行。两次* – SimpleVar 2014-08-31 08:37:53
哦,你也可以使用Start和Stop。但无论如何,我不会去阅读所有的代码。如果您需要帮助,请将其转换为显示问题的较小示例。 – Dirk 2014-08-31 08:40:12