Я работаю над большой игрой в Unity, и один из моих методов иногда превращается в бесконечное l oop. Например, это может быть код, который я использую:
public void veryBigMethod(int n) {
if (n % 2 == 0) {
while (true) {
// do a lot of work here
// that might lead to an infinite loop
}
}
else {
// much shorter code that never fails
}
}
Я пробовал это решение, но оно не работает:
public void runLoopNeverStuck() {
Thread t = new Thread(veryBigMethod);
t.Start();
if (!t.Join(TimeSpan.FromSeconds(30))) {
t.Abort();
throw new Exception("More than 30 secs.");
}
}
Что мне делать, используя только код обнаружить такой al oop и остановить его?
Почему мой код выше не работает на Unity?
Важное замечание Я могу не используйте Task / asyn c в моем коде, поэтому, пожалуйста, дайте мне ответы с темами