Нитки.Suspend устарел

#vb.net #multithreading #suspend

#vb.net #многопоточность #приостановить

Вопрос:

Какая альтернатива для Thread.Возобновить () и поток.Приостановить () в vb.net

 Private Sub StartServiceToolStrip_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StartServiceToolStrip.Click
    Using login As New Login
        If (login.ShowDialog() = DialogResult.Cancel) Then
            Return
        End If
        ClientNotifyIcon.ShowBalloonTip(100, " Network", " Network service has been started...", ToolTipIcon.Info)
        StartServiceToolStrip.Enabled = False
        StopServiceToolStrip.Enabled = True
        receiveThread.Resume()
    End Using

End Sub
  

Предупреждение 1 ‘Public Sub Suspend()’ устарел: ‘Поток.Приостановка устарела. Пожалуйста, используйте другие классы в системе.Потоки, такие как монитор, Мьютекс, событие и семафор, для синхронизации потоков или защиты ресурсов.’.

Получение этой ошибки

Комментарии:

1. Это явно в сообщении…. что использовать. Так в чем проблема? Также, на мой взгляд, используйте AutoResetEvent … Короче говоря, рабочий поток, в свою очередь, будет ожидать дескриптора ожидания, пока другой поток не вызовет другой метод, который вызывает Set EventWaitHandle .

2. я добавляю некоторые подробности выше, сэр

3. Хорошо, как уже упоминалось, используйте AutoResetEvent . Не использовать . Приостановить или возобновить. Я думаю, что это было устаревшим после фреймворка 2.0. Причина в том, что вы не можете определить, вызываете ли вы Resume, когда поток может быть приостановлен. С другой стороны, если вы Suspend где-то используете, возможно, что он может приостановить поток, пока он удерживает блокировку мьютекса … плохая идея.

4. Пожалуйста, не указывайте язык программирования в названии, если он действительно туда не вписывается . Связанные языки, библиотеки, API и т. Д. Принадлежат тегам.