AsyncOperation.PostOperationCompleted(SendOrPostCallback, Object) 메서드

정의

비동기 작업의 수명을 종료합니다.

public:
 void PostOperationCompleted(System::Threading::SendOrPostCallback ^ d, System::Object ^ arg);
public void PostOperationCompleted(System.Threading.SendOrPostCallback d, object arg);
public void PostOperationCompleted(System.Threading.SendOrPostCallback d, object? arg);
member this.PostOperationCompleted : System.Threading.SendOrPostCallback * obj -> unit
Public Sub PostOperationCompleted (d As SendOrPostCallback, arg As Object)

매개 변수

d
SendOrPostCallback

SendOrPostCallback 작업이 종료될 때 호출할 대리자를 래핑하는 개체입니다.

arg
Object

매개 변수에 포함된 대리자의 인수입니다 d .

예외

OperationCompleted() 이 작업에 대해 이전에 호출되었습니다.

dnull입니다.

예제

다음 코드 예제에서는 메서드를 PostOperationCompleted 사용하여 비동기 작업의 수명을 종료하는 방법을 보여 줍니다. 이 코드 예제는 클래스에 제공된 더 큰 예제의 System.ComponentModel.AsyncOperationManager 일부입니다.

// This method cancels a pending asynchronous operation.
public void CancelAsync(object taskId)
{
    if (userStateToLifetime[taskId] is AsyncOperation)
    {
        lock (userStateToLifetime.SyncRoot)
        {
            userStateToLifetime.Remove(taskId);
        }
    }
}
' This method cancels a pending asynchronous operation.
Public Sub CancelAsync(ByVal taskId As Object)

    Dim obj As Object = userStateToLifetime(taskId)
    If (obj IsNot Nothing) Then

        SyncLock userStateToLifetime.SyncRoot

            userStateToLifetime.Remove(taskId)

        End SyncLock

    End If

End Sub

설명

메서드를 PostOperationCompleted 호출하여 비동기 작업의 수명을 종료합니다. 이 메서드가 특정 작업에 대해 호출되면 해당 AsyncOperation 개체를 호출하면 예외가 발생합니다.

매개 변수는 d 작업의 완료, 취소 또는 실패로 인해 작업의 수명이 종료될 때 클래스에서 호출할 대리자를 래핑합니다. 개체는 AsyncOperation 애플리케이션 모델에 적합한 스레드 또는 컨텍스트에서 대리자가 호출되도록 합니다. 대리자는 필요에 따라 비동기 작업의 수명이 종료되었음을 클라이언트에 알립니다.

매개 arg 변수는 완료 대리 d자에게 상태 정보를 전달하는 데 사용됩니다. 개체 또는 개체를 AsyncOperationSystem.ComponentModel.AsyncCompletedEventArgs 매개 변수 값으로 사용할 수 있습니다. 또는 추가 상태 스토리지를 제공하려는 경우 클래스에서 파생된 클래스의 인스턴스를 System.ComponentModel.AsyncCompletedEventArgs 사용할 수 있습니다.

상속자 참고

상속자는 호출을 비동기식으로 설정 PostOperationCompleted(SendOrPostCallback, Object) 해야 하므로 클래스 라이브러리 공급자는 비동기라고 가정하지만 특정 애플리케이션 모델이 동기적일 경우 잠재적인 스택 오버플로를 염려할 필요가 없습니다. 메서드는 "수명 종료" 호출로 해석되어야 합니다. 즉, 구현이 애플리케이션 모델에 적합한 작업을 수행해야 합니다. 예를 들어 ASP.NET 미해결 비동기 작업의 수를 줄입니다. 또한 이제 완료되었으므로 후속 호출이 실패할 수 있도록 작업을 상태로 전환해야 합니다.

비동기 클래스 구현에 대한 자세한 내용은 이벤트 기반 비동기 패턴 구현을 참조하세요.

적용 대상

추가 정보