Если я прав, я должен определенно не получать ошибку переполнения стека при использовании Stopwatch.GetTimeStamp, особенно только после запуска моей программы.
Вот мой код:
if (currentTicks >= lastTicks + interval)
{
lastTicks = currentTicks;
return true;
}
currentTicks помещаются в Stopwatch.GetTimeStamp (). Этот фрагмент кода находится в методе, который называется бесконечно (я использую его для управления FPS). У кого-нибудь есть идеи?
EDIT:
Основной код формы:
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. Все остальное не может быть оценено.