在MSDN上的解释是:Application.Exit 方法
该方法停止在所有线程上运行的所有消息循环,并关闭应用程序的所有窗口。该方法并不强制应用程序退出。Exit 方法通常从一个消息循环内调用,该方法强制 Run 返回。若要只退出当前线程的某个消息循环,请调用 ExitThread。警告   当调用 Application.Exit 方法以退出应用程序时,不引发 Form.Closed 和 Form.Closing 事件。如果在必须执行的其中一个事件中有验证代码,则在调用 Exit 方法之前,应分别为每个打开的窗体调用 Form.Close 方法。 我对上面这段文字读得不是很明白,请牛人予以讲解,谢谢啦

解决方案 »

  1.   

    简单的说,Form.Close()是关闭某个表单,而Application.Exit()是退出整个应用程序。
      

  2.   

    那么上面的文字中提到的“验证代码”是什么意思
    ____________________________________________指的是Form在Close前如Closing事件中,进行相关验证确认是否关闭窗体
      

  3.   

    我也认为Form.Close()是关闭某个表单,而Application.Exit()是退出整个应用程序。并且所说的“不引发 Form.Closed 和 Form.Closing 事件”是指会关闭表单但不会执行Form.Closed 和 Form.Closing 事件中的代码即不会触发Form.Closed 和 Form.Closing 事件,不过”该方法并不强制应用程序退出“这个我不明白,退出整个应用程序难道不是强制性的嘛?我是这样认为的,只要调用Application.Exit()就能退出应用程序,那它应该就能强制应用程序退出啊。
      

  4.   

    非强制性就是说它可以被打断、拦截。
    你要是直接咔嚓进程就是强制性的。验证代码就是诸如你关闭Maxthon时候,它跳出来一个确认对话框。
      

  5.   

    我们的程序一般这样来运行
    System.Windows.Forms.Application.Run(form);
    不知道"该方法并不强制应用程序退出"的意思是不是说只是结束上面那句的运行,如果他下面还有语句的话,将继续运行.
    一直以为Application.Exit()是退出整个程序,"该方法并不强制应用程序退出"也是刚刚知道,不知道上面的猜测对不对.
    请高手出场!
      

  6.   

    回 morou_007(默柔) 
    所谓的不强制是指不强制结束这个进程里的其他线程,假如这个程序还开了其他的线程在结束时还没有关闭的,使用Application.Exit(),主线程是关闭了,但其他线程还是在跑的。如果是强制的,那么这个进程里所有的线程都会关闭的!!
      

  7.   

    TO Ivony():
    "非强制性就是说它可以被打断、拦截。"
    ==================================
    请问如何打断Application.Exit?一般阻止窗口被关掉,都是用 Form.Closing 中的验证代码来处理。Exit既然不触发 Form.Closing, Form.Closed,那有其他什么方法来打断呢?
    "该方法并不强制应用程序退出。"我也才发现,不懂。。
    英文原文为“This method does not force the application to exit. ”关注一下。
      

  8.   

    vb.net里有命令End,我想问一下,它与Application.exit()方法,有什么区别,我觉得要强制退出应用程序,用End更好些,我在程序里用Application.exit()有时达不到预期的目的。谁能谈一下它们的根本区别。
      

  9.   

    写了点代码试验了一下,从运行结果来看, 符合 Flashcom(虫虫)的“所谓的不强制是指不强制结束这个进程里的其他线程,假如这个程序还开了其他的线程在结束时还没有关闭的,使用Application.Exit(),主线程是关闭了,但其他线程还是在跑的。如果是强制的,那么这个进程里所有的线程都会关闭的!!” 这种说法。由主线程创建的子线程并不会因调用 Application.exit 而自动终止执行, 而 Application.ExitThread 则可以在子线程代码中使用来退出子线程的消息循环(即终止),如果子线程全部终止,则Application.Exit会关闭整个应用程序。而 End 则会终止主线程和其所有的子线程,强制使整个程序退出。以上只是我个人的试验结果,但其内部机制我还不是很明确,看看还有没有人可以回答了。
      

  10.   

    照我个人的经验。 Applicatin.Exit和Close都会有问题。
    最保守的还是DISPOSE的时候出现非可控现象少一点 。