C# 2.0 以降の新機能を一つづつ確認していきます。
以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きます。
非同期の破棄可能
https://docs.microsoft.com/ja-jp/dotnet/standard/garbage-collection/implementing-disposeasync
インターフェイス System.IAsyncDisposable が追加された。await using で使う。using で使いたければ同時に System.IDisposable も実装することも可能。
// 非同期の破棄 await using var sample = new Sample(); // DisposeAsyncCore // DisposeAsync // と出力される // IAsyncDisposable を実装したクラス public class Sample : IAsyncDisposable { // IAsyncDisposable インターフェイスで定義されているのメソッド public async ValueTask DisposeAsync() { await DisposeAsyncCore(); Console.WriteLine("DisposeAsync"); } // sealed クラスでない場合は派生クラスから読んでもらうためにこのメソッドを作っておく protected async virtual ValueTask DisposeAsyncCore() { Console.WriteLine("DisposeAsyncCore"); } }