为何程序在点退出后,仍占用内存?
本帖最后由 My2009 于 2012-7-27 17:06 编辑一个程式在用EXIT退出后,发现现在任务管理器里仍然存在,要过6S左右的时间才能退出,即在按F5运行后,再退出要过6S左右的时间才能进行编译,否则此栏的菜单上大多为灰色,不知退如是好,大侠们有碰到这样的问题吗? AutoIt3.exe还在,证明代码未执行完毕,Exit还未执行
检查一下代码看哪里错了 肯定代码在那里有停止了 为了检查是否执行到EXIT特意将退出改成以下模式:
Func Quit()
GUISetState(@SW_HIDE)
ProgressOn("退出", "正在退出软件,请稍候...", "", (@DesktopWidth - 340) / 2, (@DesktopHeight - 180) / 2)
_MySQL_Close($MysqlConn) ;关闭连线
_MySQL_EndLibrary() ;关闭 MYSQL (DLL)
DllCall($dll, "int:cdecl", "DeInitDecoration")
DllCall($dll, "int:cdecl", "RemoveSkin")
DllClose($dll)
ProgressOff()
Exit
EndFunc
ProgressOn对话框很快就执行完了,所以理应是到了EXIT了,只是不知为何还是要占好几秒的时间{:face (197):} 本帖最后由 半芯竹 于 2012-7-28 22:55 编辑
网络有时卡,一下子多发了。
LZ可以添加个时间记录,作对比就知道哪里出问题了 应该是关闭SQL部份执行慢了。。
你可以尝试把EXIT改成如下,就知道执行到EXIT了没有。。判断一下延时是哪个所为。。
EXIT(msgbox(0,0,'程序已执行到退出。'))
如果还是没看到。可以将程序这样写:
Func Quit()
GUISetState(@SW_HIDE)
ProgressOn("退出", "正在退出软件,请稍候...", "", (@DesktopWidth - 340) / 2, (@DesktopHeight - 180) / 2)
IniWrite(@ScriptDir&"\time.ini", "time", "now1", @HOUR&@MIN&@SEC)
_MySQL_Close($MysqlConn) ;关闭连线
IniWrite(@ScriptDir&"\time.ini", "time", "now2", @HOUR&@MIN&@SEC)
_MySQL_EndLibrary() ;关闭 MYSQL (DLL)
IniWrite(@ScriptDir&"\time.ini", "time", "now3", @HOUR&@MIN&@SEC)
DllCall($dll, "int:cdecl", "DeInitDecoration")
DllCall($dll, "int:cdecl", "RemoveSkin")
DllClose($dll)
IniWrite(@ScriptDir&"\time.ini", "time", "now4", @HOUR&@MIN&@SEC)
ProgressOff()
Exit
EndFunc
这样可以记录一下时间,作对比了。。
now1=081932
now2=081932
now3=081932
now4=081932
早上一来就试了楼上的代码,得到的数据如上,看了下,确是调用MYSQL出现的问题,还用以下的错误提示
Error in my_thread_global_end(): 2 threads didn't exit,不知有没有人有好的解决方案? 回复 1# My2009
楼主,360没有报毒吗? 没有报毒,问题还是没有解决。{:face (88):}
页:
[1]