Marc Kane Ответов: 1

Фоновый работник, чтобы проверить, существует ли файл


Я пытаюсь сделать код так, чтобы моя кнопка запуска была отключена до тех пор, пока определенный файл не будет создан в фоновом режиме. Я уже спрашивал здесь и начал делать это с помощью backgroundworker. Я отключил свою кнопку в режиме конструктора, и теперь я хочу, чтобы backgroundworker продолжал проверять, существует ли файл, и в конце включил startbutton. До сих пор мне не удавалось снова включить эту кнопку. Кроме того, если есть более быстрый способ с чем-то вроде наблюдателя файловой системы, я мог бы использовать его, но я не смог найти ни одного примера того, как это сделать.

Что я уже пробовал:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
BackgroundWorker1.RunWorkerAsync()
Startbutton.Enabled = False
Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork

Do until System.IO.File.Exists("ABC")
Loop
End Sub

    Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As System.Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) _ Handles BackgroundWorker1.RunWorkerCompleted
Startbutton.enabled=True
End Sub

Richard MacCutchan

Нет никакого смысла иметь фонового работника, если передний план ничего не делает, пока он ждет.

Marc Kane

Передний план-это создание этого файла, но для этого требуется некоторое время (проверка excel, создание конфигурации в solidworks, а затем сохранение его в новый файл), я просто не копировал код здесь.Теперь я хочу, чтобы фон включал кнопку при создании этого файла.

Richard MacCutchan

Извините, я запутался. Если передний план создает файл, то передний план знает, когда файл будет создан. Так что он также знает, когда включить кнопку.

Marc Kane

Извините, передний план запускает другое приложение, которое делает это выше, поэтому я не нашел лучшего способа сообщить переднему плану, когда процесс будет завершен, чем проверить, был ли создан окончательный файл.

Richard MacCutchan

Класс Process предоставляет различные методы, позволяющие выполнять синхронизацию с внешним процессом.

Marc Kane

Спасибо, я постараюсь это исследовать :)

1 Ответов

Рейтинг:
1

phil.o

Вы можете рассмотреть возможность использования Класса filesystemwatcher[^] вместо.
Наблюдение за активностью папки в VB.NET[^]