IAsyncDisposableインターフェイスは.NET Standard 2.1/.NET Core 3.0以降で提供されるインターフェイスで、IDisposableインターフェイスの非同期版です。 IDisposableインターフェイスのDisposeメソッドと同様、DisposeAsyncメソッドが用意されており、このインターフェイスを実装することにより非同期の破棄・解放処理を行うための操作を提供することができるようになります。
IAsyncDisposableインターフェイスはIDisposableインターフェイスとともに実装することも、単独で実装することもできます。 つまり、同期的な破棄・解放処理と、非同期的な破棄・解放処理のどちらかのみ、あるいは両方を実装することができます。 ただし、両方を実装する場合は、どちらか一方で破棄・解放処理が行われたら、もう一方が呼び出されても二重に破棄・解放が行われないように実装する必要があります。
IDisposableインターフェイスはusingステートメントとともに使用することができるのと同様、IAsyncDisposableインターフェイスは非同期版のawait usingステートメントとともに使用することができます。
IAsyncDisposableは、主にStream等のIAsyncDisposableインターフェイスを実装するクラスを内包して扱うようなクラスを作成する際に実装することが多くなるものと思われます。
以下は、IAsyncDisposableを実装し、クラス内で保持しているStreamを非同期的に破棄できるようにする例です。
あくまでIAsyncDisposableインターフェイスのみを主眼においた実装となっているため、例外時等の考慮は十分ではない点に注意してください。 より適切な実装については§.ファイナライザとIDisposableのデザインパターン (disposeパターン)を参照してください。
VB16時点のVisual Basicでは、ValueTaskを返すAsync Functionがサポートされていない?(コンパイルエラーとなる)ため、IAsyncDisposableインターフェイスは実装できないようです。