Закрытие всех безымянных потоков - C#
Формулировка задачи:
Делаю небольшую игру в Unity3d, возникла необходимость создавать потоки без названий для каждого добавляемого объекта.
Дальше в потоке выполняется бесконечный цикл
Задача - при завершение игры (не самой программы, а выхода пользователя в меню) закрыть все существующие потоки.
Как это можно реализовать?
Некую переменную меняем на True при выходе из игры
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;
}
//////////////////
}Решение задачи: «Закрытие всех безымянных потоков»
textual
Листинг программы
List<Thread> threads = new List<Thread>();