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

    +139.6

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    var complete = new ManualResetEvent(false);
    
    ThreadPool.QueueUserWorkItem(
    	delegate
    		{
    			service.StartDownloadUpdatesProcess(complete);
    		});
    
    complete.WaitOne();

    Запустим поток, а потом подождем пока он закончиться.

    Запостил: Mike Chaliy, 04 Октября 2009

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

    • tsya.ru
      Ответить
    • Нах нужно?
      Ответить
    • а в строке 8 точно ничего нет???
      Ответить
    • Нормальный код. Может service.StartDownloadUpdatesProcess должен обезательно отработать в сваоем потоке. Часто пишу похоже, так UI код всегда должен работать тока в UI потоке.
      Ответить
      • это серверный код
        Ответить
      • тут thread pool, о каком обязательно своем потоке может быть речь?
        код, разумеется, полное г.
        Ответить
    • Нормальный код. К примеру сервис в себе содержит нечто что не может работать в основном потоке - у меня такие случаи были, когда приходилось выгружать работу отдельно и ждать ее окончания.
      Ответить
      • Что это за такое нечто? Я что-то даж в теории не могу такого придумать.
        Ответить
        • В моем конкретном случае основной поток MTA (и контролировать я это не могу) а мне надо выполнить код в STA. В данном случае возможно все наоборот.
          Ответить
          • Позже... Сообразить пример на то что требует STA предоствлю вам после более глубокого изучения теории :)
            Ответить
            • ThreadPool не меняет Thread Apartment
              Ответить
              • Что значит "не меняет"? В TP потоки исполняются в MTA. Если у тебя основной поток STA а код в service требует MTA то приведенный отрывок вполне нормальное решение. Без кода в service сказать точно нельзя но и из поста говнокода не видно. Как уже сказал - бывают случаи.
                Ответить
                • да я не подумал что в теории сервис может выполняться в STA. Этот код это не тот случай, но подметил хорошо.
                  Ответить

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