2013-02-08 8 views
0

Вот как я возобновляю приостановленную нить.Thread.Resume Устаревшее или отмененное: как возобновить приостановленный поток без использования System.Threading.Thread.Resume?

if SerialThread.ThreadState = ThreadState.Suspended then 
    SerialThread.Resume; 

Хотя приведенный выше код не вызывает ошибки компилятора или ошибки синтаксиса, он, тем не менее, предупреждает о следующем:

TSerialIndicator.pas (77,18): предупреждение PW3: Вышло из употребления:. «System.Threading.Thread.Resume устарела Пожалуйста, используйте другие классы в System.Threading, такие как монитор, мьютекс, событие, и Семафор, для синхронизации потоков или защиты ресурсов.

Итак, что такое правильный способ в .NET, чтобы возобновить приостановленный поток?

+1

'Thread.Suspend()' также устарел. – SLaks

+0

@SLaks, Да, вы правы. Означает ли это, что их нельзя использовать, поскольку они могут вызвать проблемы в вашей программе? За исключением предупреждения, программа, похоже, в порядке. Однако у меня проблемы. – ThN

+2

Приостановка и возобновление потоков - это по своей сути опасные и небезопасные операции. Вы тоже не должны этого делать. – SLaks

ответ

0

AutoResetEvent отлично подходит для «подвешивания» нить, код нить просто вызывает event.Wait, если у него есть что-то, когда вызывающий звонит event.Set(), который прерывает ожидание.