1. C# / Говнокод #5501

    +127

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 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();
    					}
    				};
    			};
    		}
    	}

    Запостил: Говногость, 03 Февраля 2011

    Комментарии (18) RSS

    • > Неудаёться
      > не удалость

      какая ужасть!
      Ответить
    • > Waiteded
      лол
      Ответить
    • ...
      TErrorShower.ShowOnceIfAgree("Неудаёться остановить " + threadName + " поток. Будут предприняты попытки внештатной остановки районной електроподстанции.");
      ...
      Ответить
      • "неудаёться остановить поток взяток. Будут предприняты попытки внештатной остановки"
        "поток взяток не удалость остановить принудительно.Предпринимаю попытку принудительной остановки через взятку"
        "поток взяток не удалость остановить принудительно.Увольняем и перенаправляем поток в свой карман"
        Ответить
      • > TErrorShower
        альзо, душ ошибок
        Ответить
    • "Внимание! Опасность! В глобальной японской системе управления железнодорожной транспортной системой неудаётся остановить поток. На всех поездах Японии автоматически будут предприняты меры по экстренной остановке состава."
      Ответить
    • Какой пафосный ГК!
      Ответить
    • Кстати, а почему бы и нет? Может мне в своих проектах заюзать? (с)
      Помоему удобная штука для отладки. :) Этож надёжный контроль остановки потоков во время отладки.
      Где-то что-то не остановится - я буду знать. :)
      Ответить
      • Хотя пользовать код с ГК - это плохой знак (как чёрная кошка, перешедшая дорогу), но все же какие аргументы против?
        Код смешной, но более надёжного способа обнаружить и исправить зависшие потоки - нет.
        Ответить
        • при грамотном подходе они не зависают
          Ответить
          • Ну это ясно, но иногда не выспался, иногда пьяный, иногда сосед покопался (да мало ли что) и всё... Грамотность из подхода вся сразу уходит...
            Ответить
            • Ага: "Удиви покопавшегося соседа"...
              :)
              Ответить
              • Если сосед любит копаться в говне, то это трудно...
                Ответить
        • Ну вот, чуть что случится, у них чёрная кошка во всём виновата...
          Ответить

    Добавить комментарий