私が正しければ、 Stopwatch.GetTimeStampの使用中に、特にプログラムを開始した直後にのみ、stackoverflowエラーが発生することはありません。
これが私のコードです:
if (currentTicks >= lastTicks + interval)
{
lastTicks = currentTicks;
return true;
}
Stopwatch.GetTimeStamp()によって配置されるcurrentTicks。このコードは、無限に呼び出されるメソッドに含まれています(FPSを制御するために使用しています)。誰かアイデアはありますか?
編集:メインフォームコード:
Game game;
public Form1()
{
InitializeComponent();
game = new Game(Stopwatch.Frequency / 45);
MainLoop();
}
public void MainLoop()
{
if (game.DrawStuff(Stopwatch.GetTimestamp()))
{
Invalidate();
}
MainLoop();
}`
次に、ゲームクラス:
public long lastTicks { get; set; }
public double interval { get; set; }
public Game(double Interval)
{
interval = Interval;
}
public bool DrawStuff(long currentTicks)
{
if (currentTicks >= lastTicks + interval)
{
lastTicks = currentTicks;
return true;
}
else
{
return false;
}
}
「if(currentTicks> = lastTicks +interval)」で停止します。currentTicksの値は30025317628568であることがわかります。それ以外はすべて評価できません。