Кто-то предложит Thread.Suspend. Не используйте его, он может сломать вашу игру в трудном для тестирования способом. Он может приостановить статический ctor System.String или другого важного класса. Тогда все блокируется. Это трудно проверить, так что вы, скорее всего, узнаете в производстве в удивительное время.
Приостановка потоков должна быть совместной. Простой способ сделать это - иметь событие, которое все потоки регулярно ждут. Если вы хотите, чтобы приостановить вас сбросить событие:
static readonly AutoResetEvent evt = new ...;
//...
while (...) { //some game loop
evt.WaitOne();
DoWork();
}
This has been made into a nice PauseToken
class.
Было бы проще дать хороший ответ, есть ли какой-то код и больше контекста в этом вопросе. Но это должно заставить вас приступить к идее о приостановке потоков совместно.
Кому-то предложит Thread.Suspend. Не используйте его, он может сломать вашу игру в трудном для тестирования способом. Он может приостановить статический ctor System.String или другого важного класса. Тогда все блокируется. – usr
Хорошо, есть ли что-нибудь, в частности, вы бы предложили? –
Нет, я ничего не знаю о Monogame. Просто пытаюсь спасти вас от этой распространенной ошибки. – usr