Vb.net 整个程序没有关闭

Vb.net 整个程序没有关闭,vb.net,Vb.net,当我单击一个按钮关闭一个窗体(Error1.vb)上的整个程序时,另一个窗体不会关闭,如果我关闭主窗口(form1.vb),整个程序将关闭。这是我的密码: Dim proc = Process.GetProcessesByName("Server_Status.vshost") For i As Integer = 0 To proc.Length - 1 proc(i).CloseMainWindow() Next i 如果这有帮助,下面是我对应用程序

当我单击一个按钮关闭一个窗体(Error1.vb)上的整个程序时,另一个窗体不会关闭,如果我关闭主窗口(form1.vb),整个程序将关闭。这是我的密码:

    Dim proc = Process.GetProcessesByName("Server_Status.vshost")
    For i As Integer = 0 To proc.Length - 1
        proc(i).CloseMainWindow()
    Next i
如果这有帮助,下面是我对应用程序的设置(应用程序、编译)(屏幕截图):




来自MSDN:

通过在类中放置一个名为Main的方法,可以将表单用作应用程序中的起始类。在Main方法中,添加代码以创建和显示表单。您还需要向Main方法添加STAThread属性,以便表单运行。当起始表单关闭时,应用程序也将关闭

我假定这是从winforms模板创建新项目时的默认行为


请务必阅读其他备注:

您确实意识到您的表单是否为Form1.vb,并且它是您的启动表单,就像您的设置所说的那样。。。然后,您所要做的就是调用form1.close()关闭所有内容,即使您在另一个窗体上有一个按钮,如果您希望程序完全关闭,也可以调用form2.button1.click事件


编辑:如果有单独的线程打开或内存中的任何其他对象关闭它们(可能会干扰form1.close()的关闭)

一些不一定能解决问题的快捷方式。1) 通过引用.vshost,您的代码将只关闭由VS调试器运行的进程,而不是生产中的独立可执行文件。2)考虑翻转for循环,否则在关闭第一个窗口之后,第二个窗口现在是(0),但是您的i被设置为1,因此第二个进程将不会关闭。将I=proc.Length-1的for循环更改为
0步骤-1