Как уже упоминалось, запрещено (по уважительным причинам) обновлять элементы пользовательского интерфейса из потока, не являющегося пользовательским интерфейсом.
Каноническое решение выглядит следующим образом:
- Проверьте, находитесь ли вы за пределами пользовательского интерфейса
- Если это так, запрос на выполнение операции внутри потока пользовательского интерфейса
- [Внутри потока пользовательского интерфейса] Обновите элемент управления.
В вашем случае:
Private Sub bgFindThread()
If lblStatus.InvokeRequired Then
lblStatus.Invoke(New Action(AddressOf bgFindThread))
Return
End If
lblStatus.Text = "test"
End Sub
Единственное, что изменилось, - это выражение guard в начале метода, которое проверяет, находимся ли мы в потоке пользовательского интерфейса, и, если нет, запрашивает выполнение в потоке пользовательского интерфейса и возвращает.