IAsyncDisposable IAsyncDisposable IAsyncDisposable IAsyncDisposable Interface

정의

비관리형 리소스를 비동기적으로 해제하기 위한 메커니즘을 제공합니다.Provides a mechanism for releasing unmanaged resources asynchronously.

public interface class IAsyncDisposable
public interface IAsyncDisposable
type IAsyncDisposable = interface
Public Interface IAsyncDisposable
파생

설명

.Net에서는 관리 되지 않는 리소스를 소유한 클래스가 일반적으로 IDisposable 인터페이스를 구현 하 여 관리 되지 않는 리소스를 동기적으로 해제 하는 메커니즘을 제공 합니다.In .NET, classes that own unmanaged resources usually implement the IDisposable interface to provide a mechanism for releasing unmanaged resources synchronously. 그러나 일부 경우에는 관리 되지 않는 리소스를 해제 (또는 대신) 하는 비동기 메커니즘을 제공 해야 합니다.However, in some cases they need to provide an asynchronous mechanism for releasing unmanaged resources in addition to (or instead of) the synchronous one. 이러한 메커니즘을 제공 하면 소비자가 오랫동안 GUI 응용 프로그램의 주 스레드를 차단 하지 않고 리소스를 많이 사용 하는 삭제 작업을 수행할 수 있습니다.Providing such a mechanism enables the consumer to perform resource-intensive dispose operations without blocking the main thread of a GUI application for a long time.

IAsyncDisposable.DisposeAsync 인터페이스의 메서드는 비동기 삭제 ValueTask 작업을 나타내는을 반환 합니다.The IAsyncDisposable.DisposeAsync method of this interface returns a ValueTask that represents the asynchronous dispose operation. 관리 되지 않는 리소스를 소유 하는 클래스는이 메서드를 구현 하 고 이러한 클래스의 소비자는 더 이상 필요 하지 않을 때 개체에 대해이 메서드를 호출 합니다.Classes that own unmanaged resources implement this method, and the consumer of these classes calls this method on an object when it is no longer needed.

비동기 메서드는 및 Visual Basic의 async await C# 및 키워드와 함께 사용 됩니다.The async methods are used in conjunction with the async and await keywords in C# and Visual Basic. 자세한 insformation 비동기 및 대기를 사용한 비동기 프로그래밍 모델의 C# 작업 비동기 프로그래밍 모델 (Visual Basic)을 참조 하세요.For more insformation, see The Task asynchronous programming model in C# or Asynchronous Programming with Async and Await (Visual Basic).

IAsyncDisposable를 구현 하는 개체 사용Using an object that implements IAsyncDisposable

응용 프로그램에서를 구현 IAsyncDisposable하는 개체를 사용 하는 경우 개체의 구현을 사용 하는 경우 해당 개체의 DisposeAsync 구현을 호출 해야 합니다.If your application uses an object that implements IAsyncDisposable, you should call the object's DisposeAsync implementation when you are finished using it. 예외가 발생 하는 경우에도 리소스가 해제 되도록 DisposeAsync 하려면 finally 문의 finallytry / 내에서 메서드를 호출 합니다.To make sure resources are released even in case of an exception, call the DisposeAsync method inside a finally clause of the try/finally statement. 패턴finally 에 대 / try 한 자세한 내용은 try-finally (C#) 또는 try ...를 참조 하십시오. Catch ... Finally 문 (Visual Basic)For more information about the try/finally pattern, see try-finally (C#) or Try...Catch...Finally Statement (Visual Basic).

IAsyncDisposable 가능 구현Implementing IAsyncDisposable

다음과 같은 상황 IAsyncDisposable 에서를 구현할 수 있습니다.You might implement IAsyncDisposable in the following situations:

  • 관리 되지 않는 리소스를 소유 하는 비동기 열거자를 개발 하는 경우When developing an asynchronous enumerator that owns unmanaged resources. 비동기 열거자는 C# 8.0 비동기 스트림 기능과 함께 사용 됩니다.Asynchronous enumerators are used with the C# 8.0 async streams feature. 비동기 스트림에 대 한 자세한 내용은 자습서: 8.0 및 .NET Core 3.0 C# 를 사용 하 여 비동기 스트림을 생성 하 고 사용 합니다.For more information about async streams, see Tutorial: Generate and consume async streams using C# 8.0 and .NET Core 3.0.

  • 클래스에서 관리 되지 않는 리소스를 소유 하 고 해제 하는 경우에는 중간 버퍼의 내용을 파일로 플러시하고 네트워크를 통해 패킷을 보내 연결을 닫는 등의 리소스를 많이 사용 하는 i/o 작업이 필요 합니다.When your class owns unmanaged resources and releasing them requires a resource-intensive I/O operation, such as flushing the contents of an intermediate buffer into a file or sending a packet over a network to close a connection.

관리 되지 않는 리소스를 해제, 해제 또는 다시 설정 하는 등 관리 되지 않는 리소스를 사용한 후에 필요한 정리를 수행 하려면 메서드를사용합니다.DisposeAsyncUse the DisposeAsync method to perform whatever cleanup is necessary after using the unmanaged resources, such as freeing, releasing, or resetting the unmanaged resources. .NET의 관리 되지 않는 리소스에 대 한 자세한 내용은 관리 되지 않는 리소스 정리를 참조 하세요.For more information about unmanaged resources in .NET, see Cleaning Up Unmanaged Resources.

메서드

DisposeAsync() DisposeAsync() DisposeAsync() DisposeAsync()

비동기적으로 관리되지 않는 리소스의 확보, 해제 또는 다시 설정과 관련된 애플리케이션 정의 작업을 수행합니다.Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources asynchronously.

확장 메서드

ConfigureAwait(IAsyncDisposable, Boolean) ConfigureAwait(IAsyncDisposable, Boolean) ConfigureAwait(IAsyncDisposable, Boolean) ConfigureAwait(IAsyncDisposable, Boolean)

비동기 일회용에서 반환되는 작업을 대기하는 방법을 구성합니다.Configures how awaits on the tasks returned from an async disposable are performed.

적용 대상