Es besteht kein Problem, das zweite Formular in einem anderen Thread zu initialisieren, aber wenn Sie es im Kontext Ihres Hauptformulars verwenden möchten, müssen Sie den ursprünglichen Thread verwenden. Der folgende Code erstellt und initialisiert ein neues Formular im Hintergrundarbeiter und zeigt es dann an, wenn die Initialisierung in einem geeigneten Ereignisbehandler abgeschlossen ist:
Public Class Form1
Dim form2 As Form2
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
BackgroundWorker1.RunWorkerAsync()
End Sub
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
form2 = New Form2()
form2.TextBox1.Text = "Text"
End Sub
Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As System.Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
form2.Show()
End Sub
End Class
Sie können das ProgressChanged-Ereignis des Hintergrundarbeiters verwenden, um den Fortschritt an die Fortschrittsanzeige zu melden.