Jak tworzyć wielowątkowe formularze jako MDIChild
Czy możliwe jest posiadanie wielu form gwintowanych jako MDIChild? Mam formant ActiveX w formularzu MdiChild, który może zająć dużo czasu na przetwarzanie procesora i chciałbym, aby jeden element sterujący nie wpływał na inną kontrolę, używając poniższego przykładowego kodu. Ale linia frmDoc.MdiParent = Me zgłasza wyjątek między wątkami.
Dim frmDoc As MDIChild
Dim newThread As New Thread(
Sub()
frmDoc = New MDIChild
frmDoc.MdiParent = Me '<- this line throws cross threading exception.
Application.Run(frmDoc)
End Sub
)
newThread.IsBackground = True
newThread.SetApartmentState(ApartmentState.STA)
newThread.Start()
Zgłasza wyjątek System.InvalidOperationException:
Message=Cross-thread operation not valid:
Control 'FormMdiApp' accessed from a thread other than the thread it was created on.
Source=System.Windows.Forms