Имеет ли IAsyncDisposable эталонную реализацию? - PullRequest
0 голосов
/ 26 сентября 2019

С IDisposable я часто использовал абстрактный базовый класс, потому что реализовать его было очень сложно.Главным образом потому, что вы можете использовать интерфейс для удаления как управляемых, так и неуправляемых ссылок, и каждая из них расположена по-разному.

public abstract class Disposable : IDisposable
{
    ~Disposable() => this.Dispose(false);

    public bool IsDisposed { get; private set; }

    public void Dispose()
    {
        this.Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void DisposeManaged() {}
    protected virtual void DisposeUnmanaged() {}

    protected void ThrowIfDisposed()
    {
        if (this.IsDisposed)
        {
            throw new ObjectDisposedException(this.GetType().Name);
        }
    }

    private void Dispose(bool disposing)
    {
        if (!this.IsDisposed)
        {
            if (disposing)
            {
                this.DisposeManaged();
            }

            this.DisposeUnmanaged();
            this.IsDisposed = true;
        }
    }
}

С IAsyncDisposable я не могу найти эталонную реализацию.Кроме того, я считаю, что он обрабатывает только управляемые ресурсы в основном потому, что он настолько новый и не существует неуправляемых ресурсов, которые требуют асинхронного удаления.Это верно?Если да, то является ли реализация тогда тривиальной?

...