Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net Form.Show与Form.ShowDialog交叉线程_Vb.net_Multithreading_Winforms_Devexpress - Fatal编程技术网

Vb.net Form.Show与Form.ShowDialog交叉线程

Vb.net Form.Show与Form.ShowDialog交叉线程,vb.net,multithreading,winforms,devexpress,Vb.net,Multithreading,Winforms,Devexpress,我有以下代码,它关闭loginform并打开main表单 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 但这似乎正在关闭主窗体 有

我有以下代码,它关闭
loginform
并打开
main表单

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
但这似乎正在关闭主窗体


有什么想法吗?

我不太明白你的问题。是否要使用旧代码?新的?你想解决什么问题

对调用frm.Show()和Thisform.Close()的解释很简单。 调用frm.Show()时,新窗体将在第二个线程上打开,当前窗体将继续正常执行其代码,逻辑上到达一行代码Thisform.Close(),并在其中关闭。因为它是主窗体,所以当它关闭时,它会尝试终止所有其他窗体,因此它会尝试关闭您刚刚打开的窗体,因此会发生跨线程异常(请记住,新窗体正在另一个线程上运行;)


但是当调用frm.ShowDialog()时,操作是不同的。它不会启动一个新的线程,它只是指向新的表单,因此ShowDialog之后的任何代码行只在新论坛关闭时运行

基于旧的备份代码。这可能发生在关机模式设置中,该设置可在解决方案的属性设置的应用程序选项卡中找到。确保未将其设置为启动窗体关闭时,因为这会导致此行为。关闭模式为:上次窗体关闭时。此外,这不应该影响线程交叉调用?我担心在这种特殊情况下,对问题的描述将无助于理解它。可能有用的是在VisualStudio中获得的完整异常调用堆栈(不是从exception对象获得的)。更好-调用堆栈由所有线程执行。你能把这些信息添加到这个问题中吗?如果关闭登录表单,显示启动屏幕,并在主表单加载完成后关闭启动屏幕,我所要做的就是。以前的代码可以做到这一点,没有任何例外,但现在不行了。
Me.Hide()
Dim main As New frmMain
main.Show()
Me.Dispose()