小编mdn*_*mdn的帖子

困惑.CA1063错了?GC.SuppressFinalize(本)

我有一个简单的类MyDataClass,其成员(obj)实现了IDisposable:

public class MyDataClass : IDisposable
{
    private DisposableObject obj;
    private List<string> list;
    private int c;

    public MyDataClass()
    {
        obj = new DisposableObject();
        list = new List<string>();
        c = 114;
    }

    public void Dispose()
    {
        obj.Dispose();
    }
}

public class DisposableObject : IDisposable
{
    public void Dispose()
    {
        // Free resource
        Console.WriteLine("Dispose DisposableObject");
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行代码分析时,我得到了CA1063警告,它告诉我应该在MyDataClass实现中的Dispose()方法中调用GC.SuppressFinalize()方法.

我对这个CA1063警告感到很困惑.因为据我所知,我应该调用GC.SuppressFinalize()来指示垃圾收集器:

"嘿GC,不要担心这个对象,因为我已经为你完成了所有的清洁工作!"

所以请确认我是否错了.如果我将添加GC.SuppressFinalize()我将摆脱CA1063但它将导致GC不会清理我的对象.所以我会有内存泄漏,因为其他类成员(托管代码)将不会被清除.

.net c# garbage-collection

7
推荐指数
3
解决办法
2201
查看次数

简单的ConsoleProgram与IDisposable - 没有内存减少 - 我们有泄漏?

我有一个简单的ConsoleProgram,它创建了一个包含80个IDisposable对象的列表.该对象包含两个System.Threading.ManualResetEvent在该Dispose()方法中关闭的对象.请考虑以下代码:

public class Program
{
    private static void Main(string[] args)
    {
        Console.ReadLine();
        Test(80);
        Console.WriteLine("end.");
        Console.ReadLine();
    }

    private static void Test(int c)
    {
        Console.WriteLine("Test start.");

        List<TestObject> list = new List<TestObject>();

        for (int i = 0; i < c; i++)
            list.Add(new TestObject());

        Console.WriteLine("End of adding. Added: {0} items.", c);
        Console.ReadLine();

        foreach (TestObject obj in list)
            obj.Dispose();

        list = null;
        Console.WriteLine("Dispose end.");
    }

    public class TestObject : IDisposable
    {
        public ManualResetEvent mr1 = new ManualResetEvent(true);
        public ManualResetEvent mr2 = …
Run Code Online (Sandbox Code Playgroud)

.net c# memory-leaks idisposable

3
推荐指数
1
解决办法
244
查看次数

标签 统计

.net ×2

c# ×2

garbage-collection ×1

idisposable ×1

memory-leaks ×1