我有以下代码关闭loginform
并打开mainform
Sub Loadform(ByVal formName As Form)
Dim Thisform As Form = DirectCast(formName, frmLogIn1)
Thisform.Hide()
Dim frm As New frmMain
frm.ShowDialog() <- Problem
Thisform.Close()
End Sub
Mainform具有 devexpress splashscreenmanager,可自动加载和卸载飞溅屏幕。
当我致电frm.Show
时,我会在splashscreen关闭时得到一个跨线程。
如果我使用frm.ShowDialog
调用它,则可以正常运行。这个新的代码。该应用程序大约为12个月,并且在开始时添加了此代码,但是我现在有问题。
原始代码(取自备份(是:
Me.Hide()
Dim main As New frmMain
main.Show()
Me.Dispose()
,但这似乎现在正在关闭Mainform。
有什么想法?
我不太了解您的问题。您要使用旧代码吗?新的?您要解决什么问题?
好吧,您致电frm.show((和thisform.close((的解释很简单。当您调用frm.show((时,新表单将在第二个线程上打开,并且当前表单继续正常执行其代码,从逻辑上到达代码线thisform.close.close.close.close.close((。因为它是主要形式,所以当它关闭时,它试图终止所有其他形式,因此它试图关闭您刚刚打开的表单,因此会发生跨线程异常(请记住,新表格在另一个线程上运行;((
但是,当您致电frm.showdialog((时,操作是不同的。它不会启动新线程,而只是直接转到新表单,因此ShowDialog之后的任何代码线仅在关闭新论坛时运行;