为什么我的程序在退出以后还在内存中?而必须要用结束任务的方式才能彻底关闭?

时间:2023-02-12 23:54:09
我的程序用的是MDI窗体
就是用
【卸载所有的窗体】
    On Error Resume Next
    Dim o_frmItem As Form
    For Each o_frmItem In Forms

            Unload o_frmItem

    Next
这样也不能结束
要么有时候说程序产生错误,正在生成日志。然后硬盘吱吱嘎嘎响半天,因为我在程序中加了一个判断是否已经运行的代码,所以程序认为还是在运行,拒绝执行副本。
各位高手,请指教!谢谢

18 个解决方案

#1


完全退出程序就用 end 试试吧.

#2


进程还留着,应该用END来结束而不是UNLOAD

#3


大家看看回贴时间,一样的时间居然也有先后之分,大家快去报告BUG

#4


【卸载所有的窗体】
    On Error Resume Next
    Dim o_frmItem As Form
    For Each o_frmItem In Forms

            Unload o_frmItem
            set o_frmItem=nothing

    Next

#5


要注意释放所有资源!

#6


要注意释放所有资源!

#7


加一清除所有对象(CONTORL)试试

#8


On Error Resume Next
    Dim o_frmItem As Form
    For Each o_frmItem In Forms
            Unload o_frmItem
    Next
end

#9


On Error Resume Next
    Dim o_frmItem As Form
    For Each o_frmItem In Forms
            Unload o_frmItem
    Next
end
其实我的退出代码就是这样的
但是发觉不行,然后就把
On Error Resume Next
    Dim o_frmItem As Form
    For Each o_frmItem In Forms
            Unload o_frmItem
    Next
注释掉了。
只用END结束,还是不行啊

lz305(vincoer),怎么清除所有对象啊?

#10


如果你的程序在模块里面有循环这类没有结束的东东
虽然窗体关闭了,程序仍然不会结束的

#11


结束所有可以用kill吧

#12


回复人: gpo2002(gpo2002) ( ) 信誉:100  2003-07-30 10:52:00  得分:0 
 
 
  如果你的程序在模块里面有循环这类没有结束的东东
虽然窗体关闭了,程序仍然不会结束的
----------------------------------------------------
请问,如果有这种情况应该怎么结束呢?谢谢
  
 

#13


Dim o_frmItem As Form
    For Each o_frmItem In Forms
            Unload o_frmItem
    Next
    set o_frmItem=nothing

#14


我遇到的一般是有些对象没有释放掉,你在退出程序前要保证正常释放这些对象。
如果没有引用比较复杂或不正规的对象的话,用end就足够了。

#15


Private Declare Function TerminateProcess Lib "kernel32" Alias "TerminateProcess" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long

然后:
TerminateProcess GetCurrentProcess,0

#16


直接使用END结束

#17


就用这一个:已经有兄弟说了! 
   On Error Resume Next
    Dim o_frmItem As Form
    For Each o_frmItem In Forms

            Unload o_frmItem
            set o_frmItem=nothing
            End

    Next

#18


On Error Resume Next
    Dim o_frmItem As Form
    
    For Each o_frmItem In Forms
            Kill o_frmItem
            '//先Kill
            set o_frmItem=nothing
            '//清除对象,防止内存泄露
            End
            '//强制关闭
    Next

按以上操作,肯定不会的了, 
祝你好运。

#1


完全退出程序就用 end 试试吧.

#2


进程还留着,应该用END来结束而不是UNLOAD

#3


大家看看回贴时间,一样的时间居然也有先后之分,大家快去报告BUG

#4


【卸载所有的窗体】
    On Error Resume Next
    Dim o_frmItem As Form
    For Each o_frmItem In Forms

            Unload o_frmItem
            set o_frmItem=nothing

    Next

#5


要注意释放所有资源!

#6


要注意释放所有资源!

#7


加一清除所有对象(CONTORL)试试

#8


On Error Resume Next
    Dim o_frmItem As Form
    For Each o_frmItem In Forms
            Unload o_frmItem
    Next
end

#9


On Error Resume Next
    Dim o_frmItem As Form
    For Each o_frmItem In Forms
            Unload o_frmItem
    Next
end
其实我的退出代码就是这样的
但是发觉不行,然后就把
On Error Resume Next
    Dim o_frmItem As Form
    For Each o_frmItem In Forms
            Unload o_frmItem
    Next
注释掉了。
只用END结束,还是不行啊

lz305(vincoer),怎么清除所有对象啊?

#10


如果你的程序在模块里面有循环这类没有结束的东东
虽然窗体关闭了,程序仍然不会结束的

#11


结束所有可以用kill吧

#12


回复人: gpo2002(gpo2002) ( ) 信誉:100  2003-07-30 10:52:00  得分:0 
 
 
  如果你的程序在模块里面有循环这类没有结束的东东
虽然窗体关闭了,程序仍然不会结束的
----------------------------------------------------
请问,如果有这种情况应该怎么结束呢?谢谢
  
 

#13


Dim o_frmItem As Form
    For Each o_frmItem In Forms
            Unload o_frmItem
    Next
    set o_frmItem=nothing

#14


我遇到的一般是有些对象没有释放掉,你在退出程序前要保证正常释放这些对象。
如果没有引用比较复杂或不正规的对象的话,用end就足够了。

#15


Private Declare Function TerminateProcess Lib "kernel32" Alias "TerminateProcess" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long

然后:
TerminateProcess GetCurrentProcess,0

#16


直接使用END结束

#17


就用这一个:已经有兄弟说了! 
   On Error Resume Next
    Dim o_frmItem As Form
    For Each o_frmItem In Forms

            Unload o_frmItem
            set o_frmItem=nothing
            End

    Next

#18


On Error Resume Next
    Dim o_frmItem As Form
    
    For Each o_frmItem In Forms
            Kill o_frmItem
            '//先Kill
            set o_frmItem=nothing
            '//清除对象,防止内存泄露
            End
            '//强制关闭
    Next

按以上操作,肯定不会的了, 
祝你好运。