- 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 
                        class TStopThreadWaiter
	{
		public static void Wait(Thread threadWaitededForStop)
		{
			var threadName = threadWaitededForStop.GetType().Name;
			if (!threadWaitededForStop.Join(1000))
			{
				TErrorShower.ShowOnceIfAgree("Неудаёться остановить " + threadName + " поток. Будут предприняты попытки внештатной остановки.");
				if (!threadWaitededForStop.Join(200))
					threadWaitededForStop.Interrupt();
				if (!threadWaitededForStop.Join(200))
				{
					TErrorShower.ShowOnceIfAgree(threadName + " поток не удалость остановить принудительно через Interrupt. Предпринимаю попытку принудительной остановки через Abort.");
					threadWaitededForStop.Abort();
					if (!threadWaitededForStop.Join(200))
					{
						TErrorShower.ShowOnceIfAgree(threadName + " поток не удалость остановить принудительно через Abort. Завершаем приложение.");
						Application.Exit();
					}
				};
			};
		}
	}
                                 
        
> не удалость
какая ужасть!
лол
TErrorShower.ShowOnceIfAgree("Неудаёться остановить " + threadName + " поток. Будут предприняты попытки внештатной остановки районной електроподстанции.");
...
"поток взяток не удалость остановить принудительно.Предпринимаю попытку принудительной остановки через взятку"
"поток взяток не удалость остановить принудительно.Увольняем и перенаправляем поток в свой карман"
альзо, душ ошибок
альзо, стоп-шаг официант
Помоему удобная штука для отладки. :) Этож надёжный контроль остановки потоков во время отладки.
Где-то что-то не остановится - я буду знать. :)
Код смешной, но более надёжного способа обнаружить и исправить зависшие потоки - нет.
:)