请教一下各位高手:
    我的开发环境是windows2000+VB6+SQL Server 2000。我的可执行文件在运行时,有时退出系统的时候结束不了任务,必须通过操作系统的任务管理器去结束任务(这种情况偶尔会出现一次),但大多数情况下退出系统时是可以自动结束任务的。麻烦各位高手多多指点!

解决方案 »

  1.   

    对象没有完全释放,比如窗体没卸载完整,或者Timer事件没有执行完毕
      

  2.   

    我在退出时就是写的END
    如果是"对象没有完全释放,比如窗体没卸载完整,或者Timer事件没有执行完毕",那我应该具体怎么去处理呢?
      

  3.   

    在主窗体的unload 里
    dim f as form
    for each f in forms
      unload f
    next
      

  4.   

    dim obj  
    For Each obj  In Forms
           Unload objForm
       Next
      

  5.   

    退出按钮单击事件的代码是:
     
    end这样就可以了
      

  6.   

    一般只要加上end就可以了。
    不过如果出错了而又没有处理错误,程序退出的话就会出现你说的那种情况的。
      

  7.   

    set object=Nothing
    很重要!
      

  8.   

    我建议给退出前的窗口加一个和TIMER控件,将END 写到你当前运行的窗体的TIMER事件中,要退出就触发该控件。
      

  9.   

    应该是资源没有释放干净,注意窗体的卸载,数据库的关闭等可能的问题 :)
    另外加入End语句.
      

  10.   

    一般来说,vb是可以正常退出的,多用end反而会导致异常。除非你用了第三方控件,那就是控件的问题了,还有就是乱用Doevents,也会导致退出时资源未释放,你可以用这个办法,在主框架form_unload中添加end,然后再在form_terminal中也添加end这样不管是什么情况保证可以释放所有的资源。
      

  11.   

    如果你的程序含有多个窗体的话,那么可能是其它窗体没有UNLOAD或真正UNLOAD,
    如果你的程序只有一个窗体的话,那么应该是你的这个窗体中的某段代码(例如包含引用本窗体内任何控件或属性的循环)还没有执行完毕,你就UNLOAD了窗体。而虽然你UNLOAD了本窗体,而那些没有执行完毕的代码段又引用的本窗体的内容,所以你的窗体再次被LOAD了,这种问题你只需要在Form_Load事件中加上me.show即可发现是这种问题,如果是这样的话,你需要在那些可能会引用本窗体内容的循环代码中添加一个模块级变量(例如:Unloading)在含UNLOAD窗体的那个按钮中的UNLOAD窗体的代码前添加Unloading=True并且添加含有DOEVENTS的空DO LOOP一会,那么你就可以达到目的了。针对在UNLOAD后加END的那个方法,会出现非法操作,因为你的程序正在重装你的窗体和控件,而同时你又用END方法结束你的程序,而这时你的程序会有很多内存正在进行读写操作,所以会非法操作,而这时你的程序有很多内存没有释放,作为一个程序员,不释放你所占用的内容就强行中断你的程序,是很不负责的表现,这样你会占用很多机器资源。如果你打开你的程序100次,你就会发现系统崩溃了。都是没有释放资源惹的祸。