这是一个很简单的UserControl,提供了一个AboutBox方法用于显示About对话框,我测试时发现有时候会出现关闭Form后不能自动结束进程的问题,请大家帮忙试一试。http://www.grid2000.com/download/Test.zip测试方法:点击Form1上的“About”按钮,显示出UserControl的About对话框,用鼠标点击对话框上的OK按钮关闭它,注意要用鼠标点,而不是通过键盘操作。就这样反复点击多次,然后关闭Form1,就可能会出现TestProject.exe的进程不能自动退出的问题。同样的代码,以前在另一台机子(赛扬1.7G)上测试没有发现存在这个问题,不知道是不是我的新机子配置太高了(P4 2.93G),还是代码本身有问题,或者是VS.NET的Bug,我使用的是Windows 2000 Professional中文版和VS.NET 2003。现在我很想知道在其它的机子上是否也会出现这种情况?

解决方案 »

  1.   

    关闭进程最好的办法是Environment.Exit
      

  2.   

    谢谢 Sunmast(速马, C++/CLI)!问题是我的控件是给别人用的,不能保证别人都会用Environment.Exit关闭进程,我还是希望能在半闭Form后就自动结束进程。
      

  3.   

    To YYKXQ(异域狂想曲):同样的代码,在我以前的电脑上没有任何问题,但自从我买了一台新电脑后,就经常会遇到这个问题,困扰了我好几个月,多关闭几次Form可能会出现我所说的情况。我的Grid控件有很多用户在使用,他们也从来没有报告过类似的Bug,所以我想让大家帮我测试一下,看看是不是因为代码本身的问题,还是因为我的电脑有毛病(重新Windows 2000后都不能解决)。
      

  4.   

    按照Sunmast(速马)的办法,在主窗体的Closed事件中添加Environment.Exit(0),可以关闭进程。只是因为我的控件是给其他人用的,不能保证他们都会这样做。现在我最想搞清楚的是在其它的电脑上是否会出这种情况?
      

  5.   

    把线程对象的IsBackground属性设置为true,那么该线程就被设置为后台线程了,默认为false,即为前台线程。前台线程必须全部终止,应用程序才会结束。