Me di cuenta de que, en algún caso, Visual Studio recomienda hacer esto
await using var disposable = new Disposable();
// Do something
en lugar de esto
using var disposable = new Disposable();
// Do something
¿Cuál es la diferencia entre using
y await using
?
¿Cómo debo decidir cuál usar?
await using
con aIAsyncDisposable
y solo se puede usarusing
con aIDisposable
ya que ninguno hereda del otro. El único momento que puede usar es si la clase concreta implementa ambos y luego depende de si está escribiendo código asincrónico o no.Respuestas:
Sincronización clásica usando
El uso clásico llama al
Dispose()
método de un objeto que implementa laIDisposable
interfaz.Es equivalente a
Nueva asíncrona aguarda utilizando
El nuevo espera usando llamadas y espera el
DisposeAsync()
método de un objeto que implementa laIAsyncDisposable
interfaz.Es equivalente a
La interfaz IAsyncDisposable se agregó en
.NET Core 3.0
y.NET Standard 2.1
.fuente