是否可以將多個線程窗體作爲MDIChild?我有一個MdiChild窗體中的ActiveX控件,它可能需要很多處理CPU,並且希望通過使用下面的示例代碼使這一個控件不會影響另一個控件。但行frmDoc.MdiParent =我引發了跨線程異常。如何創建多個線程窗體作爲MDIChild
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()
拋出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
您可以使用ActiveX控件的非MDI表單製作此表單嗎? – Blorgbeard
只是想着,是否有可能在C++ MFC應用程序中完成? – walter
我不知道C++ MFC,但如果您只是將'frmDoc'更改爲非MDI子窗體,它應該可以工作。當然,你需要小心「調用」任何時候你需要從另一個線程訪問它。 – Blorgbeard