我有一个WinForms应用程序,其中包含一个主窗体MainForm
。此应用程序在某些时间间隔内调用某些计划操作。此操作需要花费大量时间来执行,因此它在后台线程中启动。当操作正在运行时,显示进度 - LoaderForm
。此表单通过loader.ShowDialog(mainForm)
显示为模式;装载机在显示时开始操作。
除非在以下情况下开始操作,否则此工作正常:
MainForm
在任务栏中最小化MainForm
隐藏在托盘中(根本未显示在任务栏中)在这种情况下,除非激活应用程序,否则我需要不来显示LoaderForm
。问题是即使LoaderForm
在没有正确处理的情况下在视觉上不可见,也会显示MainForm
。
实现理想行为的最简单方法是什么?
Imports System.ComponentModel
Public Class MainForm
Private Sub Timer_Tick(sender As Object, e As EventArgs) Handles uiTimer.Tick
uiTimer.Enabled = False
Using loader = New LoaderForm()
loader.ShowDialog(Me)
End Using
End Sub
End Class
Public Class LoaderForm
Private Sub LoaderForm_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
worker.RunWorkerAsync()
End Sub
Private Sub Worker_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs) Handles worker.RunWorkerCompleted
Me.Close()
End Sub
End Class