数据表内存泄漏 [英] DataTable memory leak

查看:103
本文介绍了数据表内存泄漏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面这段code即使没有数据是由数据库返回正在泄漏内存。任何人都可以阐明这光。 .NET分析器应用表明,罪魁祸首是数据表

 使用(OleDbDataAdapter的DA =新OleDbDataAdapter的(SELECT * FROM external_message,其中状态='P'和pendingthread =+ Thread.CurrentThread.ManagedThreadId,康涅狄格州))
                {
                    数据表DT =新的DataTable();
                    da.Fill(DT);
                    如果(dt.Rows.Count大于0)
                    {
                        DataRow的博士= dt.Rows [0];
                        NotificationService.Logger.Write(Logger.RdvLogLevel.Debug,(UINT)Thread.CurrentThread.ManagedThreadId,GetInputs,收到的消息标识{0}类型{1},博士[的MessageId。的ToString(),博士技术领域<字符串>(TargetType的));
                        返回新DatabaseItem {连接=康恩,数据行=博士};
                    }
                    其他
                    {
                        dt.Dispose();
                    }
                }
 

上的主要功能解决方案

[STAThread]是造成问题。删除它,一切工作正常了。

following piece of code is leaking memory even if no data is returned by database. could anyone shed some light on this. .net profiler application shows that the culprit is datatable

using (OleDbDataAdapter da = new OleDbDataAdapter("select * from external_message where status='P' and pendingthread=" + Thread.CurrentThread.ManagedThreadId, conn))
                {
                    DataTable dt = new DataTable();
                    da.Fill(dt);
                    if (dt.Rows.Count > 0)
                    {
                        DataRow dr = dt.Rows[0];
                        NotificationService.Logger.Write(Logger.RdvLogLevel.Debug, (uint)Thread.CurrentThread.ManagedThreadId, "GetInputs", "Received Message Id {0} Type {1}", dr["MessageId"].ToString(), dr.Field<string>("TargetType"));
                        return new DatabaseItem { connection = conn, dataRow = dr };
                    }
                    else
                    {
                        dt.Dispose();
                    }
                }

解决方案

[STAThread] on the Main function was causing problem. Removed it and everything is working fine now.

这篇关于数据表内存泄漏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆