vb.net splash-screen

vb.net - ¿Hay alguna manera de extender la pantalla de presentación en el evento mostrado?



splash-screen (2)

Hace poco estaba lidiando con este error: BeginInvokeStackflowError

Estoy usando subprocesos, y de acuerdo con mi investigación, es porque dentro del evento .start () de subprocesos llama a .invoke. Si eso se hace en el evento mainform_Load, antes de que esté listo, aparece el error BeginInvoke.

Así que he movido mi código de la carga al evento mostrado. Sin embargo, hay muchas cosas sucediendo en el fondo que no quiero que el usuario vea. ¿Hay alguna manera en mi código para extender la pantalla de bienvenida que tengo que esperar hasta que la ventana principal que se muestra haya finalizado por primera vez?

Private Sub MainWindow_Shown(sender As Object, e As EventArgs) Handles Me.Shown ''update table /search network updateTable() ''clean cleanupTable() ''fix label updateLabel() End Sub


No hay forma de ampliar la pantalla de bienvenida si la implementó utilizando la configuración del proyecto; sin embargo, puede usar el formulario de pantalla de bienvenida como formulario inicial en lugar de su formulario principal. En cuanto a esperar hasta que el hilo haya terminado para mostrar el formulario (u ocultar la pantalla de bienvenida), considere usar un booleano público en el formulario principal y cámbielo a True una vez que el hilo se haya completado. Puede usar un temporizador en la pantalla de bienvenida para verificar este cambio booleano y luego cambiar la opacidad del formulario a 1.


Su aplicación se puede iniciar de forma diferente al método predeterminado "MainForm" provisto por VB Application Framework . Esto utilizará un Sub Main como punto de partida que le permite controlar qué formas muestran y cuándo, y qué sucede antes de eso:

'' IF your form is declared here, it will be '' available to everything. e.g.: '' Friend mainfrm As Form1 Public Sub Main() '' this must be done before any forms/controls are referenced Application.EnableVisualStyles() '' the main form for the app '' just "mainfrm = New Form1" if declared above Dim mainfrm As New Form1 '' eye candy for the user Dim splash As New SplashScreen1 splash.Show() '' your code here to do stuff. '' you can also invoke your procedures on the main form '' mainfrm.FirstTimeSetup() '' for demo purposes System.Threading.Thread.Sleep(2500) '' close/hide the splash once you are done splash.Close() '' see note '' start the app with the main form Application.Run(mainfrm) End Sub

  • Agregue un módulo al proyecto, generalmente "programa"
  • Agrega tu Sub Principal
  • Vaya a Propiedades del proyecto, desmarque usar Application Framework
  • Seleccione Sub Main en el menú desplegable del objeto StartUp

Si declara la pantalla de bienvenida como Amigo en la parte superior, puede extenderla realmente hasta que se complete todo el evento de carga del formulario y cerrarlo allí / luego.