IAsyncDisposable.DisposeAsync 메서드

정의

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

public:
 System::Threading::Tasks::ValueTask DisposeAsync();
public System.Threading.Tasks.ValueTask DisposeAsync ();
abstract member DisposeAsync : unit -> System.Threading.Tasks.ValueTask
Public Function DisposeAsync () As ValueTask

반환

ValueTask

비동기 삭제 작업을 나타내는 작업입니다.A task that represents the asynchronous dispose operation.

설명

이 메서드를 사용 하 여이 인터페이스를 구현 하는 클래스의 인스턴스에서 보유 하 고 있는 파일, 스트림 및 핸들과 같은 관리 되지 않는 리소스를 비동기적으로 닫거나 해제할 수 있습니다.Use this method to asynchronously close or release unmanaged resources such as files, streams, and handles held by an instance of the class that implements this interface. 대신이 메서드를 사용 하면 IDisposable.Dispose 오랜 시간 동안 GUI 응용 프로그램의 주 스레드를 차단 하지 않고 리소스를 많이 사용 하는 삭제 작업을 수행할 수 있습니다.Using this method instead of IDisposable.Dispose enables you to perform a resource-intensive dispose operation without blocking the main thread of a GUI application for a long time.

경고

인터페이스를 구현 하는 클래스를 사용 하는 경우 IAsyncDisposable 클래스 사용을 마치면 해당 구현을 호출 해야 합니다 DisposeAsync .If you are using a class that implements the IAsyncDisposable interface, you should call its DisposeAsync implementation when you are finished using the class. 자세한 내용은 항목의 "IAsyncDisposable를 구현 하는 개체 사용" 섹션을 참조 하십시오 IAsyncDisposable .For more information, see the "Using an object that implements IAsyncDisposable" section in the IAsyncDisposable topic.

이 메서드를 구현 하는 경우 포함 계층 구조를 통해 호출을 전파 하 여 보유 된 모든 리소스를 해제 해야 합니다.When implementing this method, ensure that all held resources are freed by propagating the call through the containment hierarchy. 예를 들어 A 개체 A가 개체 B를 할당 하 고 개체 B가 개체 C를 할당 하는 경우의 DisposeAsync 구현은 B에서를 호출 해야 합니다 DisposeAsync .이는 DisposeAsync c에 대해를 호출 해야 합니다. DisposeAsync 기본 클래스에서를 구현 하는 경우에도 개체는 기본 클래스의 메서드를 호출 해야 합니다 IAsyncDisposable .For example, if an object A allocates an object B, and object B allocates an object C, then A's DisposeAsync implementation must call DisposeAsync on B, which must in turn call DisposeAsync on C. An object must also call the DisposeAsync method of its base class if the base class implements IAsyncDisposable.

개체의 메서드를 DisposeAsync 두 번 이상 호출 하는 경우 개체는 첫 번째 호출 이후의 모든 호출을 무시 하 고 성공적으로 완료 된를 동기적으로 반환 해야 합니다 ValueTask .If an object's DisposeAsync method is called more than once, the object must ignore all calls after the first one and synchronously return a successfully completed ValueTask. 메서드를 여러 번 호출한 경우에는 개체에서 예외를 throw 해서는 안 DisposeAsync 됩니다.The object must not throw an exception if its DisposeAsync method is called multiple times. 이외의 인스턴스 메서드는 DisposeAsync ObjectDisposedException 리소스가 이미 삭제 된 경우을 throw 할 수 있습니다.Instance methods other than DisposeAsync can throw an ObjectDisposedException when resources are already disposed.

적용 대상