System.IAsyncDisposable 인터페이스

이 문서에서는 이 API에 대한 참조 설명서에 대한 추가 설명서를 제공합니다.

.NET에서 관리되지 않는 리소스를 소유하는 클래스는 일반적으로 인터페이스를 구현 IDisposable 하여 비관리형 리소스를 동기적으로 해제하는 메커니즘을 제공합니다. 그러나 경우에 따라 비동기 리소스 외에도 비동기 리소스를 해제하는 비동기 메커니즘을 제공해야 합니다. 이러한 메커니즘을 제공하면 소비자가 오랫동안 GUI 애플리케이션의 기본 스레드를 차단하지 않고 리소스 집약적 삭제 작업을 수행할 수 있습니다.

이 인터페이스의 메서드는 IAsyncDisposable.DisposeAsync 비동기 삭제 작업을 나타내는 값을 반환 ValueTask 합니다. 관리되지 않는 리소스를 소유하는 클래스는 이 메서드를 구현하며, 이러한 클래스의 소비자는 더 이상 필요하지 않은 경우 개체에서 이 메서드를 호출합니다.

비동기 메서드는 C# 및 await Visual Basic의 async 키워드(keyword) 함께 사용됩니다. 자세한 내용은 비동기 및 Await를 사용한 C# 또는 비동기 프로그래밍의 작업 비동기 프로그래밍 모델(Visual Basic)을 참조하세요.

IAsyncDisposable을 구현하는 개체 사용

애플리케이션에서 구현하는 개체를 IAsyncDisposable사용하는 경우 사용이 완료되면 개체의 DisposeAsync 구현을 호출해야 합니다. 예외 발생 시에도 리소스가 해제되도록 하려면 개체를 사용하는 IAsyncDisposable 코드를 using 문(버전 8.0부터 C#)에 넣거나 문의 절finallytry/내에서 메서드를 finally 호출 DisposeAsync 합니다. 패턴에 대한 try/finally 자세한 내용은 try-finally(C#) 또는 Try...를 참조하세요. 잡을... Finally 문(Visual Basic).

IAsyncDisposable 구현

다음과 같은 상황에서 구현 IAsyncDisposable 할 수 있습니다.

  • 관리되지 않는 리소스를 소유하는 비동기 열거자를 개발하는 경우 비동기 열거자는 C# 8.0 비동기 스트림 기능과 함께 사용됩니다. 비동기 스트림에 대한 자세한 내용은 자습서: C# 8.0 및 .NET Core 3.0을 사용하여 비동기 스트림 생성 및 사용을 참조 하세요.
  • 클래스가 관리되지 않는 리소스를 소유하고 해제하는 경우 중간 버퍼의 콘텐츠를 파일로 플러시하거나 네트워크를 통해 패킷을 전송하여 연결을 닫는 등의 리소스 집약적 I/O 작업이 필요합니다.

DisposeAsync 관리되지 않는 리소스를 해제, 해제 또는 재설정하는 등 관리되지 않는 리소스를 사용한 후 필요한 모든 클린 수행하려면 이 메서드를 사용합니다. 자세한 내용은 DisposeAsync 메서드 구현을 참조 하세요.