2013-04-05 3 views
0

Я просто хочу создать простую кнопку паузы и, возможно, еще одну кнопку для возобновления при необходимости. Я смотрю вокруг, и я в основном вижу Thread.Sleep(), который не работает для меня, потому что я хочу, чтобы пауза оставалась приостановленной, пока пользователь не захочет.Кнопка паузы для игры C#

Thread.Suspend() не работает, потому что это устарело.

Я также видел другое решение о создании второй формы, однако, похоже, что это не работает для меня. Как только эта вторая форма открывается, вся программа закрывается.

Я не уверен, что это имеет значение, но моя программа в настоящее время использует два потока (основной поток, выполняющий форму1 вместе с другим потоком). В идеале все должно быть приостановлено.

+0

Просто любопытно ... Что делает ваша «другая нить»? Может быть, он запускает своего рода 'while (true) {// do something}' -loop? –

+0

Да, мой другой поток работает while (true). – krikara

+1

Почему бы вам просто не изменить его на что-то вроде 'while (! Paused)'? –

ответ

1

Самое простое, что нужно сделать, это иметь некоторые переменные/свойства, к которым может обратиться другой поток.

Bool ShouldPause = false; 

Другой поток должен быть в это игра цикла что-то вроде этого:

while(true) 
{ 
    if(!ShouldPause) 
    { 
    UpdateGame(); 
    } 
    Draw(); 
} 

Тогда игра будет происходить только тогда, когда переменная ShouldPause ложно. Я делал это несколько раз, и он работал отлично.

Вы не хотите приостанавливать поток через некоторые функции «Приостановить», поскольку он не позволит ему рисовать на экране и будет выглядеть так, как будто он не отвечает.

Смежные вопросы