即使数据库没有返回任何数据,下面的代码仍然会泄漏内存。能否有人解释一下这是为什么?.net性能分析器显示罪魁祸首是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();
}
}