ODBC在c#应用程序中泄漏内存

时间:2013-09-30 09:20:17

标签: c# memory-leaks odbc paradox

我似乎有内存泄漏。我在stackoverflow上发现了一条推荐“使用”方法的帖子,但这似乎并没有解决问题。

我正在使用Red Gate内存分析器,它显示非托管内存不断增加。

这是我测试的简单应用程序:

namespace TimerDebug
{
public partial class TimerDebug : ServiceBase
{
    public TimerDebug()
    {
        InitializeComponent();
    }

    protected override void OnStart(string[] args)
    {
         // Create Timer
        Timer MyTimer = new Timer(500);
        MyTimer.Elapsed += MyTimer_Elapsed;

        // Start Timer
        MyTimer.Start();

    }

    void MyTimer_Elapsed(object sender, ElapsedEventArgs e)
    {
        using (var C = new OdbcConnection("Dsn=MyFireReport;"))
        {

            C.Open();

        }

        OdbcConnection.ReleaseObjectPool();
    }

    protected override void OnStop()
    {
    }
}
}

有人知道如何解决这个问题吗? 感谢。

1 个答案:

答案 0 :(得分:0)

OdbcConnection.ReleaseObjectPool();就是这个原因。我遇到了一些严重的问题,不断增加句柄和内存泄漏导致DEP关闭我的软件。 使用SQLClient中的模拟器可以观察到同样的问题,甚至在使用此语句之前关闭或处理连接也没有帮助。

我已经将OdbcConnection.ReleaseObjectPool();仅用于我的情况中的关键,因为它破坏了与Oracle服务器的连接。

目前我已经删除了这些软件,并且该软件现在已经运行了一个多星期。