「機器人遊戲」是我開發的第一款基礎遊戲。洋紅色的'#'字符是敵人,它應該在這張地圖上有一個隨機的移動,但是它的隨機移動速度太快了,我嘗試使用線程,但是它影響了所有角色的速度。現在,我需要每隔100毫秒調用一次「Enemy」方法。如何在C#中每隔幾秒調用一次特定的方法?
機器人遊戲圖片:
「機器人遊戲」是我開發的第一款基礎遊戲。洋紅色的'#'字符是敵人,它應該在這張地圖上有一個隨機的移動,但是它的隨機移動速度太快了,我嘗試使用線程,但是它影響了所有角色的速度。現在,我需要每隔100毫秒調用一次「Enemy」方法。如何在C#中每隔幾秒調用一次特定的方法?
機器人遊戲圖片:
您可以使用System.Timer。但是,應該預先警告,這些定時器可能不如您想要的那麼準確。你永遠不會在Windows等非實時操作系統上獲得完全準確的定時器,但如果你想要更好的定時器準確性,Multimedia timer可能會有所幫助。
從MSDNSystem.Timer例如:
public class Timer1
{
private static System.Timers.Timer aTimer;
public static void Main()
{
// Normally, the timer is declared at the class level,
// so that it stays in scope as long as it is needed.
// If the timer is declared in a long-running method,
// KeepAlive must be used to prevent the JIT compiler
// from allowing aggressive garbage collection to occur
// before the method ends. You can experiment with this
// by commenting out the class-level declaration and
// uncommenting the declaration below; then uncomment
// the GC.KeepAlive(aTimer) at the end of the method.
//System.Timers.Timer aTimer;
// Create a timer with a ten second interval.
aTimer = new System.Timers.Timer(10000);
// Hook up the Elapsed event for the timer.
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
// Set the Interval to 2 seconds (2000 milliseconds).
aTimer.Interval = 2000;
aTimer.Enabled = true;
Console.WriteLine("Press the Enter key to exit the program.");
Console.ReadLine();
// If the timer is declared in a long-running method, use
// KeepAlive to prevent garbage collection from occurring
// before the method ends.
//GC.KeepAlive(aTimer);
}
// Specify what you want to happen when the Elapsed event is
// raised.
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime);
}
}
您是否嘗試過這個.. http://stackoverflow.com/questions/10954859/run-function-every-second-visual-c-sharp – 2013-04-10 12:30:26
或這個問題http://stackoverflow.com/questions/2897787/whats-the-most-efficient-way-to-call-a-method-every-20-seconds?rq=1 – 2013-04-10 12:31:12
使用['Timer'] (http://msdn.microsoft.com/en-gb/library/system.timers.timer.aspx)。這是一個基本的[教程](http://www.dotnetperls.com/timer)。 – 2013-04-10 12:29:48