有人用C#这样写winform
2008-12-18 10:23
323 查看
用C#写winform,将EXCEL文件中的数据写入数据库中,将DataGrid中的数据导出为EXCEL格式。最后发现EXCEL内存泄漏,在应用程序不退出的情况下,总是有一个EXCEL进程不能清除!在网上找了许多答案,都是无用的答案!什么不管三七二十一杀EXCEL进程啦,不是最有效的方法!其实最有效的方法就是下面这个方法:
1、对excel操作做成一个函数,然后调用此函数。在函数中调用GC.Collect();无用,因为GC不回收调用自己的那一段代码块!
2、在函数的下面调用GC.Collect();语句。你会发现EXCEL进程没有了!
例如:
private void Import() {
Excel.Application myExcel = new Excel.Application();
myExcel.Workbooks.Add(openFileDialog1.FileName);
//........
//读取EXCEL文件,导入到数据库.
//清除excel垃圾进程
myExcel.Workbooks.Close();
myExcel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel);
myExcel = null;
}
private void ExcelImport() {
Import();
GC.Collect();
}
//以下按button1按钮,使用多线程读取EXCEL文件,导入到数据库.
private void button1_Click(object sender, System.EventArgs e) {
if(openFileDialog1.ShowDialog() == DialogResult.OK) {
System.Threading.Thread t=new System.Threading.Thread(new System.Threading.ThreadStart(ExcelImport));
t.Start();
}
}
1、对excel操作做成一个函数,然后调用此函数。在函数中调用GC.Collect();无用,因为GC不回收调用自己的那一段代码块!
2、在函数的下面调用GC.Collect();语句。你会发现EXCEL进程没有了!
例如:
private void Import() {
Excel.Application myExcel = new Excel.Application();
myExcel.Workbooks.Add(openFileDialog1.FileName);
//........
//读取EXCEL文件,导入到数据库.
//清除excel垃圾进程
myExcel.Workbooks.Close();
myExcel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel);
myExcel = null;
}
private void ExcelImport() {
Import();
GC.Collect();
}
//以下按button1按钮,使用多线程读取EXCEL文件,导入到数据库.
private void button1_Click(object sender, System.EventArgs e) {
if(openFileDialog1.ShowDialog() == DialogResult.OK) {
System.Threading.Thread t=new System.Threading.Thread(new System.Threading.ThreadStart(ExcelImport));
t.Start();
}
}
相关文章推荐
- C# WinForm清空界面控件值的小技巧
- C# winform中窗口的关闭按钮的隐藏与禁用的几种方式说明
- C# winform 无API函数实现系统快捷键
- C# WinForm窗口最小化到系统托盘
- c# winform 程序打包部署
- C# WinForm 操作小结
- (八)C#之WinForm程序设计-图片浏览器
- 最新学习的点滴[C#、Asp.net、WinForm]
- C#里WinForm开发中如何实现控件随窗体大小的改变而自动适应其改变(转)
- C# Winform Chart控件使用
- C#自定义按钮、自定义WinForm无边框窗体、自定义MessageBox窗体
- C#中WinForm程序退出方法技巧总结
- 黑马程序员--使用C#开发基于Winform的手机号码归属地查询工具
- c# Winform 开发分屏显示应用程序
- C# — WinForm 饼形图之插入介绍文字
- C# winform 最小化到电脑右下角
- 关于C# Winform DataGridView 设置DefaultCellStyle无效的原因与解决方案
- C#中winform使用相对路径读取文件的方法
- C#WinForm利用Web Service API查询数据库并显示到客户端
- WinForm中TabControl的一些事件写法(C#)