-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