Я знаю, что в отношении этой проблемы есть много вопросов, а также много ответов, но я читаю уже несколько дней и не могу найти решение своей проблемы.Я должен также упомянуть, что я новичок в этом вопросе.
Прежде всего я хочу объяснить в тексте, что делает моя программа vb.net:
- После запуска моего приложения сНа этой кнопке я запускаю средство просмотра файлов для файла сообщений о состоянии в MainForm и запускаю новый поток для вычисления моих тестовых данных.
- Этот поток инициирует класс, и в этом классе он также инициирует средство просмотра файлов.
- Когда тестовые данные создаются в контролируемой папке, поток анализирует мои данные и записывает их в базу данных.
- В рамках расчета и после записи в базу данных задача записывает некоторые сообщения о состоянии в файл сообщений о состоянии.
- Содержимое сообщений о состоянии должно отображаться в MainForm в текстовом поле и должно обновляться всегда, когда записывается новое состояние, так что самое новое состояние всегда находится над TextBox.Также о прогрессе необходимо сообщать MainForm, чтобы отображать его с помощью индикатора выполнения.
- Это повторяется до тех пор, пока в моей папке есть новые тестовые данные, другими словами, мое приложение - «пылесос для обработки данных», который высасывает все данные из отслеживаемого каталога, чтобы проанализировать и записать их вбаза данных.Если все данные в папке проанализированы и записаны в базу данных, она ожидает новых данных, и после того, как файловый наблюдатель запустил новое событие, задача снова начнет анализировать и записывать.Поэтому я не запускаю задачу всегда, когда у меня появляются новые данные.Задача запускается только тогда, когда я запускаю свое приложение.Все остальное выполняется событием filewatcher в рамках этой задачи.
Я не могу этого сделать, потому что не могу изменить свой графический интерфейс из этого потока.Я должен также упомянуть, что код для этого потока находится в другом классе.
Это мой код в основной форме:
Private Async Sub btnStart_Click(sender As Object, e As EventArgs) Handles btnStart.Click
Await Task.Run(Sub() gFileWatcher.InitWatcher())
End Sub
Как можно обновить TextBox в реальном времени, то есть после изменения статуса?