(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

AsyncResult-Klasse

Kapselt die Ergebnisse eines asynchronen Vorgangs für einen Delegaten.

System.Object
  System.Runtime.Remoting.Messaging.AsyncResult

Namespace:  System.Runtime.Remoting.Messaging
Assembly:  mscorlib (in mscorlib.dll)

[ComVisibleAttribute(true)]
public class AsyncResult : IAsyncResult, 
	IMessageSink

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

  NameBeschreibung
Öffentliche EigenschaftAsyncDelegateRuft das Delegatobjekt ab, für das der asynchrone Aufruf ausgelöst wurde.
Öffentliche EigenschaftAsyncStateRuft das Objekt ab, das als letzter Parameter eines BeginInvoke-Methodenaufrufs angegeben ist.
Öffentliche EigenschaftAsyncWaitHandleRuft ein WaitHandle ab, das Win32-Synchronisierungshandles kapselt und die Implementierung verschiedener Synchronisierungsschemas ermöglicht.
Öffentliche EigenschaftCompletedSynchronouslyRuft einen Wert ab, der angibt, ob der BeginInvoke-Aufruf synchron abgeschlossen wurde.
Öffentliche EigenschaftEndInvokeCalledRuft einen Wert ab, der angibt, ob EndInvoke für das aktuelle AsyncResult aufgerufen wurde, oder legt diesen fest.
Öffentliche EigenschaftIsCompletedRuft einen Wert ab, der angibt, ob der Server den Aufruf abgeschlossen hat.
Öffentliche EigenschaftNextSinkRuft die nächste Meldungssenke in der Senkenkette ab.
Zum Seitenanfang

  NameBeschreibung
Öffentliche MethodeAsyncProcessMessageImplementiert die IMessageSink-Schnittstelle.
Öffentliche MethodeEquals(Object)Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist. (Von Object geerbt.)
Geschützte MethodeFinalize Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.)
Öffentliche MethodeGetHashCodeFungiert als die Standardhashfunktion. (Von Object geerbt.)
Öffentliche MethodeGetReplyMessageRuft die Antwortmeldung für den asynchronen Aufruf ab.
Öffentliche MethodeGetTypeRuft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Geschützte MethodeMemberwiseCloneErstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Öffentliche MethodeSetMessageCtrlLegt ein IMessageCtrl für den aktuellen Remotemethodenaufruf fest, das das Steuern asynchroner Meldungen nach der Meldungsverteilung ermöglicht.
Öffentliche MethodeSyncProcessMessageVerarbeitet eine von einem Methodenaufruf für ein Remoteobjekt zurückgegebene Antwortmeldung synchron.
Öffentliche MethodeToStringGibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)
Zum Seitenanfang

Die AsyncResult-Klasse wird mit asynchronen Methodenaufrufen unter Verwendung von Delegaten verwendet. Das von der BeginInvoke-Methode des Delegaten zurückgegebene IAsyncResult kann in ein AsyncResult umgewandelt werden. Das AsyncResult besitzt die AsyncDelegate-Eigenschaft, die das Delegatobjekt enthält, für das der asynchrone Aufruf ausgelöst wurde.

Weitere Informationen über BeginInvoke sowie über asynchrone Aufrufe mit Delegaten finden Sie unter Asynchrone Programmierung mithilfe von Delegaten.

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.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

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

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft