Я заметил, что в некоторых случаях Visual Studio рекомендует сделать это
await using var disposable = new Disposable();
// Do something
вместо этого
using var disposable = new Disposable();
// Do something
В чем разница между using
и await using
?
Как я должен решить, какой использовать?
await using
с,IAsyncDisposable
и вы можете использовать толькоusing
с,IDisposable
так как ни один не наследует от другого. Единственный раз, когда вы можете использовать любой из них, это если конкретный класс реализует оба, и тогда это зависит от того, пишете ли вы асинхронный код или нет.Ответы:
Классическая синхронизация с использованием
Классическое использование вызывает
Dispose()
метод объекта, реализующегоIDisposable
интерфейс.Эквивалентно
Новая асинхронная версия ожидает использования
Новые ожидают использования вызовов и ожидают
DisposeAsync()
метода объекта, реализующегоIAsyncDisposable
интерфейс.Эквивалентно
IAsyncDisposable интерфейс был добавлен в
.NET Core 3.0
и.NET Standard 2.1
.источник