Aracılığıyla paylaş


AsyncOperation Sınıf

Tanım

Zaman uyumsuz işlemin ömrünü izler.

public ref class AsyncOperation sealed
public sealed class AsyncOperation
type AsyncOperation = class
Public NotInheritable Class AsyncOperation
Devralma
AsyncOperation

Örnekler

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

Tam kod listesi için bkz . Nasıl yapılır: Olay Tabanlı Zaman Uyumsuz Deseni Destekleyen Bir Bileşen Uygulama. İstemci formunun tam kod listesi için bkz . Nasıl yapılır: Olay Tabanlı Zaman Uyumsuz Desenin İstemcisini Uygulama.

// 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

Olay Tabanlı Zaman Uyumsuz Desene Genel Bakış'a göre bir sınıf uyguladığınızda, sınıfınızın bir örneğinde çağrılan her zaman uyumsuz işlemin ömrünü izlemeniz gerekebilir. sınıfı, AsyncOperation zaman uyumsuz bir görevin ilerleme durumunu izlemek ve raporlamak için yollar sağlar.

Aşağıdaki liste, bir AsyncOperation nesneyi kullanmanın yollarını tanımlar:

  • İlerleme durumunu ve ara sonuçları istemciye bildirmek için zaman uyumsuz çalışan kodunuzdan çağrısı Post alın.

  • Zaman uyumsuz bir görevin tamamlandığını belirtmek veya bekleyen zaman uyumsuz bir görevi iptal etmek için çağrısı gerçekleştirin PostOperationCompleted.

Sınıfınız, her görev başlatıldığında çağırarak AsyncOperationManager.CreateOperation her zaman uyumsuz görev için bir AsyncOperation nesne almalıdır. İstemcinin ayrı zaman uyumsuz görevleri ayırt etmesine izin vermek için, AsyncOperationManager.CreateOperation benzersiz bir istemci tarafından sağlanan belirtecin parametresini UserSuppliedState alır ve bu özellik haline gelir. Daha sonra, ilerleme veya tamamlama olaylarını oluşturan belirli zaman uyumsuz görevi tanımlamak için istemci kodu tarafından kullanılabilir.

Devralanlara Notlar

Uygulayıcılar ve Post(SendOrPostCallback, Object) çağrılarının zaman uyumsuz olduğundan emin PostOperationCompleted(SendOrPostCallback, Object) olmalıdır, böylece sınıf kitaplığı sağlayıcılarının, zaman uyumlu olan belirli bir uygulama modelinde zaman uyumsuz davranış varsaymaları durumunda olası yığın taşmalarıyla ilgilenmeleri gerekmez.

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

Özellikler

SynchronizationContext

Oluşturucuya SynchronizationContext geçirilen nesneyi alır.

UserSuppliedState

Zaman uyumsuz bir işlemi benzersiz olarak tanımlamak için kullanılan bir nesneyi alır veya ayarlar.

Yöntemler

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
Finalize()

Zaman uyumsuz işlemi son haline getirme.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
OperationCompleted()

Zaman uyumsuz bir işlemin ömrünü sonlandırır.

Post(SendOrPostCallback, Object)

uygulama modeli için uygun iş parçacığında veya bağlamda bir temsilci çağırır.

PostOperationCompleted(SendOrPostCallback, Object)

Zaman uyumsuz bir işlemin ömrünü sonlandırır.

ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Şunlara uygulanır

Ayrıca bkz.