Thread.Join
От: Ed.ward Россия  
Дата: 20.06.03 08:54
Оценка: 12 (1)
Здравствуйте, r_v_s, Вы писали:

__>можно ли преобразовать System.Threading.Thread к WaitHandle?

__>если нет, то как возможно сделать ожидание завершения нескольких потоков?

Thread.Join имхо

Ed.ward
... << RSDN@Home 1.0 beta 7a >>
WaitForMultipleObjects есть ли аналог ?
От: r_v_s  
Дата: 20.06.03 08:20
Оценка:
Re: WaitForMultipleObjects есть ли аналог ?
От: SubZero2000 Украина  
Дата: 20.06.03 08:42
Оценка:
Здравствуйте, r_v_s, Вы писали:

...WaitHandle — это класс пространства имен System.Threading, выступающий в качестве управляемой оболочки для синхронизационных объектов в Windows. Его производными классами являются Mutex, AutoResetEvent и ManualResetEvent. При вызове WaitOne для объекта или мьютекса вы вызываете метод, унаследованный от WaitHandle. WaitAny и WaitAll — это статические методы, позволяющие потоку ожидать нескольких (на большинстве платформ до 64) мьютексов или событий одновременно. Они предоставляют управляемым приложениям те же возможности, что и функция WaitForMultipleObject Windows API — обычным приложениям...

(с)(_SZ_)
Re[2]: WaitForMultipleObjects есть ли аналог ?
От: r_v_s  
Дата: 20.06.03 08:49
Оценка:
можно ли преобразовать System.Threading.Thread к WaitHandle?
если нет, то как возможно сделать ожидание завершения нескольких потоков?
Re[3]: WaitForMultipleObjects есть ли аналог ?
От: SubZero2000 Украина  
Дата: 20.06.03 09:11
Оценка:
Здравствуйте, r_v_s, Вы писали:

__>можно ли преобразовать System.Threading.Thread к WaitHandle?

__>если нет, то как возможно сделать ожидание завершения нескольких потоков?


...Ниже вызывающий поток блокируется, пока не будет установлен один из объектов AutoResetEvent в массиве syncobjects:


AutoResetEvent are1 = new AutoResetEvent(false);
AutoResetEvent are2 = new AutoResetEvent(false);
AutoResetEvent are3 = new AutoResetEvent(false);
...
WaitHandle[] syncobjects = new WaitHandle[3]{are1, are2, are3};
WaitHandle.WaitAny(syncobjects);


Если вместо WaitAny задействовать WaitAll, поток блокируется, пока не будут установлены все AutoResetEvent:


WaitHandle.WaitAll(syncobjects);


WaitAny и WaitAll также имеют версии, принимающие значения тайм-аутов. Тайм-ауты могут быть выражены как целые(миллисекунды) или как значения TimeSpan.
А прервать поток, ожидающий сикнализации, синхронизационных объетов, позволяет метод Interrupt класса Thread. Он генерирует исключение ThreadInterruptedException в потоке, для которого он вызван. Interrupt работает только для ожидающих, спящих или приостановленных потоков; если вызвать его для незаблокированного потока, поток будет прерван, когда заблокируется в следующий раз...

(с)(_SZ_)
Re[4]: WaitForMultipleObjects есть ли аналог ?
От: shapkin Великобритания  
Дата: 20.06.03 14:30
Оценка:
Здравствуйте, SubZero2000, Вы писали:

Откуда цитирование, если не секрет?
... << RSDN@Home 1.0 beta 6a >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.