- 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 + " поток. Будут предприняты попытки внештатной остановки районной електроподстанции.");
...
"поток взяток не удалость остановить принудительно.Предпринимаю попытку принудительной остановки через взятку"
"поток взяток не удалость остановить принудительно.Увольняем и перенаправляем поток в свой карман"
альзо, душ ошибок
альзо, стоп-шаг официант
Помоему удобная штука для отладки. :) Этож надёжный контроль остановки потоков во время отладки.
Где-то что-то не остановится - я буду знать. :)
Код смешной, но более надёжного способа обнаружить и исправить зависшие потоки - нет.
:)