Запрет повторного запуска идентичного потока - C#

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

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

Thread th = new Thread(delegate() { DoWork(); });
            th.Start();
 
void DoWork()
        {
 
}
Допустим запускаю в цикле этот поток 10 раз, или в любой другой аналогичной ситуации, как запретить создавать идентичный поток?

Решение задачи: «Запрет повторного запуска идентичного потока»

textual
Листинг программы
using System;
using System.Threading;
 
namespace ConsoleApplication9
{
    class Program
    {
        static bool thFlag = false;
 
        static void Main( string[] args )
        {
//бессконечный цикл
            while ( true )
            {
//если флаг закрыт, то поток не запустится
                if ( !thFlag )
                {
//флаг свободен 
//закрываем флаг
                    thFlag = true;
//создаем поток
                    Thread th = new Thread( () =>
                    {
                        Thread.Sleep( 1000 );
                        Console.WriteLine( "Поток завершился" );
//поток, когда завершится, откроет флаг
                        thFlag = false;
                    } );
 //запускаем поток
                    th.Start();
                }
            }
        }
    }
}

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


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

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

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