Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
Übersetzung
Original
0 von 1 fanden dies hilfreich - Dieses Thema bewerten.

AsyncOperation-Klasse

Verfolgt die Lebensdauer eines asynchronen Vorgangs.

System.Object
  System.ComponentModel.AsyncOperation

Namespace:  System.ComponentModel
Assembly:  System (in System.dll)
[HostProtectionAttribute(SecurityAction.LinkDemand, SharedState = true)]
public sealed class AsyncOperation

Der AsyncOperation-Typ macht die folgenden Member verfügbar.

  Name Beschreibung
Öffentliche Eigenschaft SynchronizationContext Ruft das SynchronizationContext-Objekt ab, das an den Konstruktor übergeben wurde.
Öffentliche Eigenschaft UserSuppliedState Ruft ein Objekt ab, das für die eindeutige Identifikation eines asynchronen Vorgangs verwendet wird, und legt dieses fest.
Zum Seitenanfang
  Name Beschreibung
Öffentliche Methode Equals(Object) Bestimmt, ob das angegebene Object und das aktuelle Object gleich sind. (Von Object geerbt.)
Geschützte Methode Finalize Gibt einem Objekt Gelegenheit zu dem Versuch, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der automatische Speicherbereinigung freigegeben wird. (Von Object geerbt.)
Öffentliche Methode GetHashCode Fungiert als Hashfunktion für einen bestimmten Typ. (Von Object geerbt.)
Öffentliche Methode GetType Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Geschützte Methode MemberwiseClone Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Öffentliche Methode OperationCompleted Beendet die Lebensdauer eines asynchronen Vorgangs.
Öffentliche Methode Post Ruft einen Delegaten auf dem Thread oder Kontext auf, der für das Anwendungsmodell geeignet ist.
Öffentliche Methode PostOperationCompleted Beendet die Lebensdauer eines asynchronen Vorgangs.
Öffentliche Methode ToString Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)
Zum Seitenanfang

Wenn Sie eine Klasse entsprechend Übersicht über ereignisbasierte asynchrone Muster implementieren, müssen Sie möglicherweise die Lebensdauer der einzelnen asynchronen Vorgänge verfolgen, die in einer Instanz der Klasse aufgerufen wurden. Die AsyncOperation-Klasse bietet Möglichkeiten, den Fortschritt einer asynchronen Aufgabe zu verfolgen und darüber zu berichten.

In der folgenden Liste werden verschiedene Möglichkeiten der Verwendung eines AsyncOperation-Objekts dargestellt:

  • Rufen Sie Post vom asynchronen Worker-Code auf, um dem Client über Fortschritt und Zwischenergebnisse zu berichten.

  • Rufen Sie PostOperationCompleted auf, um anzugeben, dass eine asynchrone Aufgabe abgeschlossen wurde, oder um eine ausstehende asynchrone Aufgabe abzubrechen.

Die Klasse sollte ein AsyncOperation-Objekt für jede asynchrone Aufgabe abrufen, indem sie AsyncOperationManager.CreateOperation aufruft, wenn die Aufgabe beginnt. Damit der Client unterschiedliche asynchrone Aufgaben unterscheiden kann, verwendet AsyncOperationManager.CreateOperation einen Parameter für ein eindeutiges, vom Client bereitgestelltes Token, das zur UserSuppliedState-Eigenschaft wird. Sie kann dann über Clientcode für die Identifikation der bestimmten asynchronen Aufgabe verwendet werden, die Fortschritt oder Abschlussereignisse auslöst.

Hinweis Hinweis

Das auf diesen Typ oder Member angewendete HostProtectionAttribute-Attribut besitzt den folgenden Resources-Eigenschaftswert: SharedState. Das HostProtectionAttribute hat keine Auswirkungen auf Desktopanwendungen (die normalerweise durch Doppelklicken auf ein Symbol, Eingeben eines Befehls oder einer URL in einem Browser gestartet werden). Weitere Informationen finden Sie unter der HostProtectionAttribute-Klasse oder unter SQL Server-Programmierung und Hostschutzattribute.

Hinweise zur Vererbung

In einer Implementierung muss sichergestellt werden, dass PostOperationCompleted und Post asynchron aufgerufen werden, damit Klassenbibliothekanbieter sich nicht mit möglichen Stapelüberläufen beschäftigen müssen, wenn sie von einem asynchronen Verhalten in einem bestimmen Anwendungsmodell ausgehen, das sich als synchron herausstellt.

Weitere Informationen über das Implementieren von asynchronen Klassen finden Sie unter Implementieren des ereignisbasierten asynchronen Entwurfsmusters.

Im folgenden Codebeispiel wird die Verwendung eines AsyncOperation-Objekts zur Verfolgung der Lebensdauer asynchroner Vorgänge veranschaulicht. Dieses Codebeispiel ist Teil eines umfangreicheren Beispiels für die System.ComponentModel.AsyncOperationManager-Klasse.

Eine vollständige Codeauflistung finden Sie unter Gewusst wie: Implementieren einer Komponente, die das ereignisbasierte asynchrone Muster unterstützt. Eine vollständige Codeauflistung eines Clientformulars finden Sie unter Gewusst wie: Implementieren eines Clients des ereignisbasierten asynchronen Musters.


// 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);
}


.NET Framework

Unterstützt in: 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Community-Inhalt Hinzufügen
Anmerkungen FAQ