Показать сообщение отдельно

  #78  
Старый 08.02.2009, 09:38
[x26]VOLAND
Постоянный
Регистрация: 07.06.2006
Сообщений: 556
Провел на форуме:
7549607

Репутация: 2702


По умолчанию

Такой вопрос (C#).
Есть основной поток программы. Из него запускаю другой (рабочий) поток методом thread.Start().
Но как известно, код после thread.Start() выполняется сразу, не дожидаясь завершения рабочего потока.
Как мне дождаться завершения рабочего потока и только затем продолжить выполнение кода сновного потока, при этом чтобы во время ожидания GUI программы не зависал?
Пробовал AutoResetEvent :

Код:
thread.Start(); //Запускаем рабочий поток
autoEvent.WaitOne(); // лочится основной поток
< some_code >; // код, который нам надо выполнить по завершению рабочего потока
В конце рабочего потока прописан сигнальный вызов autoEvent.Set().

Но данный метод естественно не прокатил, ибо ожидающий (он же основной) поток начисто блокируется (то есть gui виснет)

Какие есть пути решения?
 
Ответить с цитированием