BADF00D / DisposableFixer

This is a Visual Studio Extension and NuGet package that should identify and fix problems as memleaks while using IDisposables.
Other
35 stars 7 forks source link

Problem with disposed fields/properties assigned by await #100

Closed BADF00D closed 5 years ago

BADF00D commented 5 years ago

Prerequisites

Description

Source Code

using System;
using System.IO;
using System.Threading.Tasks;

namespace MyNamespace
{
    class MyClass : IDisposable
    {
        private MemoryStream Field;
        private MemoryStream Property { get; set; }

        public async Task MyMethod()
        {
            Field = await CreateMemoryStream();
            var t = await CreateMemoryStream();
            Property = await CreateMemoryStream(); 
            t.Dispose();
        }

        private Task<MemoryStream> CreateMemoryStream()
        {
            return Task.FromResult(new MemoryStream());
        }

        public void Dispose()
        {
            Field?.Dispose();
            Property?.Dispose();
        }
    }
}

Screenshot

image

BADF00D commented 5 years ago

Will be part of next release. Probably v 1.1.4