AsyncOperationManager.CreateOperation(Object) Yöntem

Tanım

Belirli bir AsyncOperation zaman uyumsuz işlemin süresini izlemek için bir döndürür.

public:
 static System::ComponentModel::AsyncOperation ^ CreateOperation(System::Object ^ userSuppliedState);
public static System.ComponentModel.AsyncOperation CreateOperation (object userSuppliedState);
public static System.ComponentModel.AsyncOperation CreateOperation (object? userSuppliedState);
static member CreateOperation : obj -> System.ComponentModel.AsyncOperation
Public Shared Function CreateOperation (userSuppliedState As Object) As AsyncOperation

Parametreler

userSuppliedState
Object

Görev kimliği gibi bir istemci durumu parçasını belirli bir zaman uyumsuz işlemle ilişkilendirmek için kullanılan nesne.

Döndürülenler

Zaman AsyncOperation uyumsuz yöntem çağırma süresini izlemek için kullanabileceğiniz bir.

Örnekler

Aşağıdaki kod örneği, zaman uyumsuz işlemlerin süresini izlemek için bir System.ComponentModel.AsyncOperation oluşturmak için yönteminin kullanılmasını CreateOperation gösterir. Bu kod örneği, sınıfı için AsyncOperationManager sağlanan daha büyük bir örneğin parçasıdır.

// This method starts an asynchronous calculation. 
// First, it checks the supplied task ID for uniqueness.
// If taskId is unique, it creates a new WorkerEventHandler 
// and calls its BeginInvoke method to start the calculation.
public virtual void CalculatePrimeAsync(
    int numberToTest,
    object taskId)
{
    // Create an AsyncOperation for taskId.
    AsyncOperation asyncOp =
        AsyncOperationManager.CreateOperation(taskId);

    // Multiple threads will access the task dictionary,
    // so it must be locked to serialize access.
    lock (userStateToLifetime.SyncRoot)
    {
        if (userStateToLifetime.Contains(taskId))
        {
            throw new ArgumentException(
                "Task ID parameter must be unique", 
                "taskId");
        }

        userStateToLifetime[taskId] = asyncOp;
    }

    // Start the asynchronous operation.
    WorkerEventHandler workerDelegate = new WorkerEventHandler(CalculateWorker);
    workerDelegate.BeginInvoke(
        numberToTest,
        asyncOp,
        null,
        null);
}
' This method starts an asynchronous calculation. 
' First, it checks the supplied task ID for uniqueness.
' If taskId is unique, it creates a new WorkerEventHandler 
' and calls its BeginInvoke method to start the calculation.
Public Overridable Sub CalculatePrimeAsync( _
    ByVal numberToTest As Integer, _
    ByVal taskId As Object)

    ' Create an AsyncOperation for taskId.
    Dim asyncOp As AsyncOperation = _
        AsyncOperationManager.CreateOperation(taskId)

    ' Multiple threads will access the task dictionary,
    ' so it must be locked to serialize access.
    SyncLock userStateToLifetime.SyncRoot
        If userStateToLifetime.Contains(taskId) Then
            Throw New ArgumentException( _
                "Task ID parameter must be unique", _
                "taskId")
        End If

        userStateToLifetime(taskId) = asyncOp
    End SyncLock

    ' Start the asynchronous operation.
    Dim workerDelegate As New WorkerEventHandler( _
        AddressOf CalculateWorker)

    workerDelegate.BeginInvoke( _
        numberToTest, _
        asyncOp, _
        Nothing, _
        Nothing)

End Sub

Açıklamalar

yöntemi, CreateOperation belirli bir System.ComponentModel.AsyncOperation zaman uyumsuz işlemin süresini izlemek ve işlem tamamlandığında uygulama modelini uyarmak için kullanabileceğiniz bir döndürür. İşlemi sonlandırmadan ilerleme güncelleştirmelerini ve artımlı sonuçları göndermek için de kullanabilirsiniz. , System.ComponentModel.AsyncOperation bu çağrıları uygulama modeli için uygun iş parçacığına veya bağlama doğru şekilde sıralar.

Olay Tabanlı Zaman Uyumsuz Deseni destekleyen bir sınıf uygularsanız, MethodNameAsync yönteminiz her çağrıldığında sınıfınız çağırmalıdırCreateOperation. yöntemine çağrı yapan istemci uygulaması, zaman uyumsuz işlemin yürütülmesi sırasında tetiklenen olayları ayırt etmek amacıyla her çağrıyı benzersiz olarak tanımlamak için parametresini kullanabilir userSuppliedState .

Dikkat

İstemci kodu, parametresi için userSuppliedState benzersiz bir değer sağlamalıdır. Benzersiz olmayan görev kimlikleri uygulamanızın ilerleme durumunu ve diğer olayları yanlış bildirmesine neden olabilir. Kodunuz benzersiz olmayan bir görev kimliğini denetlemeli ve algılanırsa bir System.ArgumentException oluşturmalıdır.

Kodunuz tarafından CreateOperation döndürülen her System.ComponentModel.AsyncOperation bir değeri izlemeli ve güncelleştirmeleri göndermek ve işlemi sonlandırmak için ilgili temeldeki zaman uyumsuz işlemdeki nesnesini kullanmalıdır. Bu izleme, parametresini System.ComponentModel.AsyncOperation temsilciler arasında geçirmek kadar basit olabilir. Daha karmaşık tasarımlarda sınıfınız bir nesne koleksiyonu System.ComponentModel.AsyncOperation sürdürebilir, görevler başlatıldığında nesne ekleyebilir ve görevler tamamlandığında veya iptal edildiğinde bunları kaldırabilir. Bu yaklaşım benzersiz userSuppliedState parametre değerlerini denetlemenize olanak tanır ve birden çok eşzamanlı çağrıyı destekleyen sınıflarla çalışırken kullanmanız gereken yöntemdir.

Zaman uyumsuz sınıflar uygulama hakkında daha fazla bilgi için bkz. Olay Tabanlı Zaman Uyumsuz Deseni Uygulama.

Şunlara uygulanır

Ayrıca bkz.