Markieren Sie das Kontrollkästchen Englisch, um die englische Version dieses Artikels anzuzeigen. Sie können den englischen Text auch in einem Popup-Fenster einblenden, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch
Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

IAsyncResult-Schnittstelle

Stellt den Status eines asynchronen Vorgangs dar.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)

[ComVisibleAttribute(true)]
public interface IAsyncResult

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

  NameBeschreibung
Öffentliche EigenschaftUnterstützt von XNA Frameworkft8a6455.PortableClassLibrary(de-de,VS.100).gifAsyncStateRuft ein benutzerdefiniertes Objekt ab, das einen asynchronen Vorgang beschreibt oder Informationen darüber enthält.
Öffentliche EigenschaftUnterstützt von XNA Frameworkft8a6455.PortableClassLibrary(de-de,VS.100).gifAsyncWaitHandleRuft eine WaitHandle-Klasse auf, die für das Warten auf den Abschluss eines asynchronen Vorgangs verwendet wird.
Öffentliche EigenschaftUnterstützt von XNA Frameworkft8a6455.PortableClassLibrary(de-de,VS.100).gifCompletedSynchronouslyRuft einen Wert ab, der angibt, ob der asynchrone Vorgang synchron abgeschlossen wurde.
Öffentliche EigenschaftUnterstützt von XNA Frameworkft8a6455.PortableClassLibrary(de-de,VS.100).gifIsCompletedRuft einen Wert ab, der angibt, ob der asynchrone Vorgang abgeschlossen wurde.
Zum Seitenanfang

Die IAsyncResult-Schnittstelle wird von Klassen implementiert, die Methoden enthalten, die asynchron arbeiten können. Dies ist der Rückgabetyp von Methoden, die einen asynchronen Vorgang initiieren, z. B. FileStream.BeginRead, und der Typ des dritten Parameters von Methoden, die einen asynchronen Vorgang abschließen, z. B. FileStream.EndRead. IAsyncResult -Objekte werden auch an Methoden übergeben, die beim Abschluss eines asynchronen Vorgangs von AsyncCallback-Delegaten aufgerufen werden.

In einem Objekt, das die IAsyncResult-Schnittstelle unterstützt, werden Zustandsinformationen bezüglich eines asynchronen Vorgangs gespeichert. Es stellt ein Synchronisierungsobjekt bereit, mit dem Threads die Beendigung eines Vorgangs signalisiert werden kann.

HinweisHinweis

Die AsyncResult-Klasse ist die Implementierung von IAsyncResult, die von der BeginInvoke-Methode zurückgegeben wird, wenn Sie eine Methode mithilfe eines Delegaten asynchron aufrufen.

Eine ausführliche Beschreibung der Verwendung der IAsyncResult-Schnittstelle finden Sie unter dem Thema Asynchrones Aufrufen von synchronen Methoden.

Im folgenden Beispiel wird veranschaulicht, wie mit der AsyncWaitHandle-Eigenschaft ein WaitHandle abgerufen und auf den asynchronen Aufruf eines Delegaten gewartet wird. Das WaitHandle wird bei Beendigung des asynchronen Aufrufs signalisiert, und durch Aufrufen der WaitOne-Methode kann darauf gewartet werden.

Das Beispiel besteht aus zwei Klassen: der Klasse mit der Methode, die asynchron aufgerufen wird, und der Klasse mit der aufrufenden Main-Methode.

Weitere Informationen und Beispiele zum asynchronen Aufrufen von Methoden mit Delegaten finden Sie unter Asynchrones Aufrufen von synchronen Methoden.


using System;
using System.Threading; 

namespace Examples.AdvancedProgramming.AsynchronousOperations
{
    public class AsyncDemo 
    {
        // The method to be executed asynchronously.
        public string TestMethod(int callDuration, out int threadId) 
        {
            Console.WriteLine("Test method begins.");
            Thread.Sleep(callDuration);
            threadId = Thread.CurrentThread.ManagedThreadId;
            return String.Format("My call time was {0}.", callDuration.ToString());
        }
    }
    // The delegate must have the same signature as the method
    // it will call asynchronously.
    public delegate string AsyncMethodCaller(int callDuration, out int threadId);
}


...


using System;
using System.Threading;

namespace Examples.AdvancedProgramming.AsynchronousOperations
{
    public class AsyncMain 
    {
        static void Main() 
        {
            // The asynchronous method puts the thread id here.
            int threadId;

            // Create an instance of the test class.
            AsyncDemo ad = new AsyncDemo();

            // Create the delegate.
            AsyncMethodCaller caller = new AsyncMethodCaller(ad.TestMethod);

            // Initiate the asychronous call.
            IAsyncResult result = caller.BeginInvoke(3000, 
                out threadId, null, null);

            Thread.Sleep(0);
            Console.WriteLine("Main thread {0} does some work.",
                Thread.CurrentThread.ManagedThreadId);

            // Wait for the WaitHandle to become signaled.
            result.AsyncWaitHandle.WaitOne();

            // Perform additional processing here.
            // Call EndInvoke to retrieve the results.
            string returnValue = caller.EndInvoke(out threadId, result);

            // Close the wait handle.
            result.AsyncWaitHandle.Close();

            Console.WriteLine("The call executed on thread {0}, with return value \"{1}\".",
                threadId, returnValue);
        }
    }
}

/* This example produces output similar to the following:

Main thread 1 does some work.
Test method begins.
The call executed on thread 3, with return value "My call time was 3000.".
 */


.NET Framework

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

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Unterstützt in:

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.
Anzeigen: