14 个解决方案
#1
搬个凳子来坐看楼下的
#2
closing事件里面有代码吧
#3
关闭前通常会做些收尾工作,如释放非托管资源等等,根据具体程序情况不同了,直接调用close()当然快了,很多必要的收尾工作就丢失了
#4
this.close();
this.diagnose();
#5
资源的释放,连接的释放等等
#6
没准在记录些什么东西。。。
#7
释放资源,垃圾回收
#8
释放资源
#9
关闭前通常会做些收尾工作,如释放非托管资源等等,根据具体程序情况不同了,直接调用close()当然快了,很多必要的收尾工作就丢失了
那要怎么让关闭按钮,直接去调用close()呢,不然程序太卡了
那要怎么让关闭按钮,直接去调用close()呢,不然程序太卡了
#10
不大同意楼上的观点!!
看看.net的垃圾回收机制,
什么时候垃圾回收是不确定的,在大多数情况下不进行垃圾回收,
有可能够触发垃圾回收的条件:
1.系统空闲
2.内存开销高度紧张
看看.net的垃圾回收机制,
什么时候垃圾回收是不确定的,在大多数情况下不进行垃圾回收,
有可能够触发垃圾回收的条件:
1.系统空闲
2.内存开销高度紧张
#11
应该在窗体的closed事件里面
写关闭程序的代码
写关闭程序的代码
#12
既然是屏幕键盘,一般有两种做法
一种是HOOK,在启动程序的时候要HOOK,在退出的时候要UNHOOK,楼主调用close,UNHOOK这段就被跳过去啦。
这样对系统是不利的。简单的SSDT hook系统还不至于蓝屏,要是内核级的就会内存泄漏甚至BSOD啦。
还有一种我记得是类似输入法的做法,不过这种方法我不是很熟悉。大概就是有一个线程注入到了被输入窗体。所以也会有一个销毁的过程。
由于本人内核方面不是很熟,以上信息仅供参考
一种是HOOK,在启动程序的时候要HOOK,在退出的时候要UNHOOK,楼主调用close,UNHOOK这段就被跳过去啦。
这样对系统是不利的。简单的SSDT hook系统还不至于蓝屏,要是内核级的就会内存泄漏甚至BSOD啦。
还有一种我记得是类似输入法的做法,不过这种方法我不是很熟悉。大概就是有一个线程注入到了被输入窗体。所以也会有一个销毁的过程。
由于本人内核方面不是很熟,以上信息仅供参考
#13
默认有啥,就有啥.
你可以重载这个方法.
你可以重载这个方法.
#14
关注
#1
搬个凳子来坐看楼下的
#2
closing事件里面有代码吧
#3
关闭前通常会做些收尾工作,如释放非托管资源等等,根据具体程序情况不同了,直接调用close()当然快了,很多必要的收尾工作就丢失了
#4
this.close();
this.diagnose();
#5
资源的释放,连接的释放等等
#6
没准在记录些什么东西。。。
#7
释放资源,垃圾回收
#8
释放资源
#9
关闭前通常会做些收尾工作,如释放非托管资源等等,根据具体程序情况不同了,直接调用close()当然快了,很多必要的收尾工作就丢失了
那要怎么让关闭按钮,直接去调用close()呢,不然程序太卡了
那要怎么让关闭按钮,直接去调用close()呢,不然程序太卡了
#10
不大同意楼上的观点!!
看看.net的垃圾回收机制,
什么时候垃圾回收是不确定的,在大多数情况下不进行垃圾回收,
有可能够触发垃圾回收的条件:
1.系统空闲
2.内存开销高度紧张
看看.net的垃圾回收机制,
什么时候垃圾回收是不确定的,在大多数情况下不进行垃圾回收,
有可能够触发垃圾回收的条件:
1.系统空闲
2.内存开销高度紧张
#11
应该在窗体的closed事件里面
写关闭程序的代码
写关闭程序的代码
#12
既然是屏幕键盘,一般有两种做法
一种是HOOK,在启动程序的时候要HOOK,在退出的时候要UNHOOK,楼主调用close,UNHOOK这段就被跳过去啦。
这样对系统是不利的。简单的SSDT hook系统还不至于蓝屏,要是内核级的就会内存泄漏甚至BSOD啦。
还有一种我记得是类似输入法的做法,不过这种方法我不是很熟悉。大概就是有一个线程注入到了被输入窗体。所以也会有一个销毁的过程。
由于本人内核方面不是很熟,以上信息仅供参考
一种是HOOK,在启动程序的时候要HOOK,在退出的时候要UNHOOK,楼主调用close,UNHOOK这段就被跳过去啦。
这样对系统是不利的。简单的SSDT hook系统还不至于蓝屏,要是内核级的就会内存泄漏甚至BSOD啦。
还有一种我记得是类似输入法的做法,不过这种方法我不是很熟悉。大概就是有一个线程注入到了被输入窗体。所以也会有一个销毁的过程。
由于本人内核方面不是很熟,以上信息仅供参考
#13
默认有啥,就有啥.
你可以重载这个方法.
你可以重载这个方法.
#14
关注