Запрет повторного запуска идентичного потока - C#
Формулировка задачи:
Thread th = new Thread(delegate() { DoWork(); });
th.Start();
void DoWork()
{
}Решение задачи: «Запрет повторного запуска идентичного потока»
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();
}
}
}
}
}