Перетащите Timer, ProgressBar и BackgroundWorker на форму. Первое, что вы хотите сделать, - это предотвратить отображение формы при запуске программы. Вставьте этот код в класс формы:
Protected Overrides Sub SetVisibleCore(ByVal value As Boolean)
If Not Me.IsHandleCreated Then
value = False
Me.CreateHandle
End If
MyBase.SetVisibleCore(value)
End Sub
Используйте таймер, чтобы начать работу. Установите его свойства Interval и Enabled, добавьте обработчик события Tick:
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Me.Show()
ProgressBar1.Visible = True
Me.Enabled = False
BackgroundWorker1.RunWorkerAsync()
End Sub
Это делает форму видимой при запуске задания и запускает фонового работника. Установите для свойства BGW WorkerReportsProgress значение True и добавьте 3 обработчика событий:
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
'' Do stuff here, call BackgroundWorker1.ReportProgress to update the PB
End Sub
Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As System.Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
ProgressBar1.Value = e.ProgressPercentage
End Sub
Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As System.Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
ProgressBar1.Visible = False
Me.Enabled = True
Me.Hide()
End Sub
Вы должны заполнить код для обработчика событий DoWork. Пусть он выполнит эти 15 заданий, обязательно вызовите BackgroundWorker1.ReportProgess, чтобы индикатор выполнения обновлялся. Именно это и делает обработчик событий ProgressChanged. Обработчик события RunWorkerCompleted снова скрывает форму.
Вы можете вызвать метод Show () в событии пункта контекстного меню для NotifyIcon, чтобы пользователь мог снова сделать вашу форму видимой. Вызовите Application.Exit () в пункте контекстного меню, который позволит пользователю выйти из вашего приложения. Убедитесь, что вы отключили это, когда BGW работает. Или реализуйте способ чистой остановки работы.