Закрытие всех безымянных потоков - C#

Узнай цену своей работы

Формулировка задачи:

Делаю небольшую игру в Unity3d, возникла необходимость создавать потоки без названий для каждого добавляемого объекта.
static public void AddVideo(string name, short type, short genre, short place, short adv)
    {
        
        //тут много кода неотносящегося к теме вопроса
        //////////////
        new Thread(delegate () { ThreadCreation(VideoBase.id.Count); }).Start();
    }
Дальше в потоке выполняется бесконечный цикл
 static public void ThreadCreation(int id) {
        int last_time = 0;               //в эту переменную будем загонять текущее значение нашего таймера
        int time = 100;                  //так как значение last_time может быть равно от 0 до 60 инициализироуем переменную числом 100
        //поток существует до конца игры
        while (true){
            last_time = MainTimer.GameTime.sec; //значение общего игрового таймера
            Thread.Sleep(50);            //небольшая задержка
            if (time != last_time) {
                VideoCalculation(id);    //метод расчетов
                time = last_time;        //возвращаем переменной текущее значение таймера, пока общий таймер не изменится, новый расчет производится не будет
            }
            
        }
Задача - при завершение игры (не самой программы, а выхода пользователя в меню) закрыть все существующие потоки. Как это можно реализовать?
Верен ли такой подход?
while (true){
            last_time = MainTimer.GameTime.sec; //значение общего игрового таймера
            Thread.Sleep(50);            //небольшая задержка
            if (time != last_time) {
                VideoCalculation(id);    //метод расчетов
                time = last_time;        //возвращаем переменной текущее значение таймера, пока общий таймер не изменится, новый расчет производится не будет
            }
             /////////////
             if(Значение некоторой переменной = true) {
                        break;
                        return 0;
              }
             //////////////////
            
        }
Некую переменную меняем на True при выходе из игры

Решение задачи: «Закрытие всех безымянных потоков»

textual
Листинг программы
List<Thread> threads = new List<Thread>();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.571 из 5
Похожие ответы