Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在不终止进程的情况下释放与进程相关的资源_C#_.net - Fatal编程技术网

C# 在不终止进程的情况下释放与进程相关的资源

C# 在不终止进程的情况下释放与进程相关的资源,c#,.net,C#,.net,我从数据库中导出了大量数据(特别是图像),我试图处理对象,但内存分配似乎一直在堆积。请帮忙这是我的密码 foreach (var v in EntityFrameworkContext.GetInstance.DbContext.ATasks.ToList()) { if (v.TaskImages.Count == 0) continue; var dir = string.Format("{0}\\{1}"

我从数据库中导出了大量数据(特别是图像),我试图处理对象,但内存分配似乎一直在堆积。请帮忙这是我的密码

foreach (var v in EntityFrameworkContext.GetInstance.DbContext.ATasks.ToList())                         
{

    if (v.TaskImages.Count == 0)
        continue;

    var dir = string.Format("{0}\\{1}", txtDumpFolder.Text, v.Id);

    if (!Directory.Exists(dir))
        Directory.CreateDirectory(string.Format("{0}\\{1}", txtDumpFolder.Text, v.Id));

    lstLog.Invoke((MethodInvoker)delegate()
        {
            lstLog.Items.Add("---------------------------------------------------------------------");
            lstLog.Items.Add(string.Format("DIRECTORY: {0} Created.", dir));

            int visibleItems = lstLog.ClientSize.Height / lstLog.ItemHeight;
            lstLog.TopIndex = Math.Max(lstLog.Items.Count - visibleItems + 1, 0);
        });

    v.TaskImages.ToList().ForEach(a =>
    {
        using (Bitmap bmp = new Bitmap(new MemoryStream(a.Image)))
        {
            PropertyItem[] pi = bmp.PropertyItems;
            bmp.Save(string.Format("{0}\\{1}.jpg", dir, a.Id), ImageFormat.Jpeg);

            LogMessage(string.Format("IMAGE: {0} \n exported.", a.Id));
        }
    });
    GC.Collect();
};

}

GC.Collect()
几乎从来都不是答案。你是如何管理/关闭数据库上下文的?这个问题的标题让我毛骨悚然。释放一个流程的资源而不扼杀它就像在你搬走之前拆掉一栋房子。不推荐。如果您正在泄漏内存,则需要解决该问题。使用内存探查器获取帮助。任务管理器不适合您。不要看它。不要担心内存管理,它不适合您。只有当你遇到异常时才担心这些事情。你没有处理你的记忆流,这可能是个问题。我不知道a.Image的类型是什么,假设它是一个字节数组就可以了。谢谢你的回复,我使用的是单例模式,我刚刚意识到我没有关闭它,我现在就试试。多谢各位