У меня есть некоторый код в BackgroundWorker, который помогает мне предотвратить замерзание интерфейс, а бас подключения к аудиопотока:поточно-вызов из асинхронной операции в BackgroundWorker
Private Sub WorkerConnectToStream_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles WorkerConnectToStream.DoWork
Bass.BASS_StreamFree(StreamNumber)
StreamNumber = Bass.BASS_StreamCreateURL(StreamAddr, 0, BASSFlag.BASS_STREAM_STATUS, _downloadProc_, Me.Handle)
If StreamNumber <> 0 Then
Bass.BASS_ChannelPlay(StreamNumber, True)
End If
End Sub
Но я получаю: InvalidOperationException с сообщением " Имя управляющего элемента доступно из потока, отличного от потока, на котором он был создан. " Если я устанавливаю свойство CheckForIllegalCrossThreadCalls на false или я запускаю свою программу из папки Debug, тогда все в порядке, но это не лучшее решение.
, если я использую:
invoke(sub()
StreamNumber = Bass.BASS_StreamCreateURL(StreamAddr, 0, BASSFlag.BASS_STREAM_STATUS, _downloadProc_, Me.Handle)
end sub)
, то это сообщение является исчезает, но интерфейс моей форме замерзает. Как я могу решить эту проблему? Большое спасибо! Я прошу прощения за мой плохой английский.