AsyncOperationManager Sınıf

Tanım

Zaman uyumsuz yöntem çağrılarını destekleyen sınıflar için eşzamanlılık yönetimi sağlar. Bu sınıf devralınamaz.

public ref class AsyncOperationManager abstract sealed
public static class AsyncOperationManager
type AsyncOperationManager = class
Public Class AsyncOperationManager
Devralma
AsyncOperationManager

Örnekler

Aşağıdaki kod örneği, herhangi bir uygulama modeli için zaman uyumsuz işlemleri destekleyen bir sınıf oluşturmak için sınıfını kullanmayı AsyncOperationManager gösterir. Asal olup olmadığını belirlemek için bir sayıyı test eden bir sınıfın nasıl uygulandığını gösterir. Bu hesaplama zaman alabilir, bu nedenle ayrı bir iş parçacığında yapılır. İlerleme raporları, artımlı sonuçlar ve tamamlama bildirimleri sınıfı tarafından AsyncOperation işlenir ve bu da istemcinin olay işleyicilerinin uygun iş parçacığında veya bağlamda çağrılmasını sağlar.

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

Sınıfınızın Olay Tabanlı Zaman Uyumsuz Desene Genel Bakış'a göre zaman uyumsuz davranış sağlaması gerekiyorsa, bir dizi eşzamanlılık yönetimi sorunuyla karşılaşırsınız. Bunlar arasında, olay işleyicilerinin uygulama modeline uygun bir iş parçacığında veya bağlamda (örneğin, Windows Forms uygulamalar, ASP.NET uygulamalar, konsol uygulamaları vb.) çağrıldığından emin olmak gerekir. , AsyncOperationManager .NET Framework tarafından desteklenen tüm uygulama modellerinde düzgün çalışan bir sınıf oluşturmak için uygun bir yol sağlar.

sınıfı, AsyncOperationManagerCreateOperationbelirli bir System.ComponentModel.AsyncOperation zaman uyumsuz görevin süresini izlemek için kullanılabilecek bir döndüren bir yöntemine sahiptir. System.ComponentModel.AsyncOperation Görev tamamlandığında istemcileri uyarmak için bir görev için kullanılabilir. İşlemi sonlandırmadan ilerleme güncelleştirmelerini ve artımlı sonuçları göndermek için de kullanılabilir.

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

Özellikler

SynchronizationContext

Zaman uyumsuz işlem için eşitleme bağlamını alır veya ayarlar.

Yöntemler

CreateOperation(Object)

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

Şunlara uygulanır

Ayrıca bkz.