#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 и т. Д. Принадлежат тегам.