编辑:我缩短了代码示例
我在C#编码,试图设置一个计时器。 我以前做过,但这次根本没用。 我无数次看过它,找不到什么错! 请帮忙!
计时器应该以RestoreMana()方法启动,但它似乎不是。 然后,计时器应该每秒(1000毫秒)运行restoreTimer_Elapsed()。 这似乎也不是这样。
此代码适用于Terraria TShock插件并使用其中的包,但计时器来自System.Timers。那么有人可以帮忙吗? :d 谢谢!
ALT Pastebin link: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();
}
}
}
答案 0 :(得分:0)
注意:我希望你现在就像1个月前提出这个问题一样解决这个问题。
无论如何,正如评论中所述,我会说你的问题似乎就在这一行:
restoreTimer.Enabled = false;
应该是:
restoreTimer.Enabled = true;
...除非您在调用restoreTimer.Start()之前在其他位置设置此布尔值;