运行exe报错一般会有下面几个消高方面
1、离开编译环境就报错,是缺少运行组件或组件版本不对
2、程序有内存溢出
3、请求的资源已被占用(你使用的资源没有释放)
4、程序语指桥虚法没唯燃有问题,但逻辑有问题
用GC.KeepAlive(a).a是你定义的
KeepAlive 方法的目的是确保对对象的引亏轮用存在,该对象有被垃圾回收器穗山过早回销族信收的危险。这种现象可能发生的一种常见情形是,当在托管代码或数据中已没有对该对象的引用,但该对象仍然在非托管代码(如 Win32 API、非托管 DLL 或使用 COM 的方法)中使用。另一种过早发生垃圾回收的情形是,在一个方法中创建并使用一个对象。此时,当对对象的某个成员的调用仍在执行时,可能会对该对象进行回收,如第一个代码示例所示。
释蔽蠢放资源对象是Conn吧,你写的:conn.Open()呢!当然所释放的对象就是打开数据库对象了,不关Cmd的事,把 cmd.Dispose()改成conn.Dispose()就可以啦--以上错误,逻辑上的错误宏汪陪
using()//在完成之后.会自动关闭连接的,
本来想手动cmd.dispose是没有错的,虽然有垃圾收集器.但是因为陵姿你return了函数就返回调用点了,导致没有方法访问cmd.dispose
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)