Спать на пару минут в приложении Windows Forms - PullRequest
1 голос
/ 26 мая 2011

Я сделал какую-то игру как консольное приложение, и теперь я хочу перенести ее в Windows Forms. В режиме консоли я использую функцию Thread.Sleep () для замедления некоторых элементов в моей игре (они перемещаются сверху вниз в окно), но когда я использую функцию в приложении Windows Form, это делает окно приложения занятым , Я должен выключить программу, нажав ALT + F4. Как я могу это исправить или есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 26 мая 2011

Вы должны использовать System.Windows.Forms.Timer

System.Windows.Forms.Timer myTimer = new System.Windows.Forms.Timer();

myTimer.Tick += new EventHandler(TimerEventProcessor);
myTimer.Interval = 5000;//This is in milli seconds
myTimer.Start();


private void TimerEventProcessor(Object myObject,
                                            EventArgs myEventArgs) {
{
  //Your code 
}

Обратите внимание , что вы не должны использовать System.Timers.Timer

Из MSDN: В .NET Framework версии 2.0 и более ранних версиях компонент Timer перехватывает и подавляет все исключения, создаваемые обработчиками событий для события Elapsed. Это поведение может быть изменено в будущих версиях .NET Framework. В нем не сказано, были ли они изменены или нет.

0 голосов
/ 26 мая 2011

Использование Thread.Sleep() для управления чем-либо похоже на DoEvents из VB6 - вероятно, очень плохая идея :) Не зная много о структуре вашего приложения, как насчет использования Timer, чтобы вы могли перемещать вещи с точно скоростью хочешь?

Если бы вы могли дать более подробную информацию, которая может помочь ...

Кроме того, создавать графы в Windows намного проще в WPF, чем в WinForms, опять же, в зависимости от того, чем является ваш проект:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...