(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
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

IAsyncResult.IsCompleted-Eigenschaft

Ruft einen Wert ab, der angibt, ob der asynchrone Vorgang abgeschlossen wurde.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)
bool IsCompleted { get; }

Eigenschaftswert

Typ: System.Boolean
true , wenn der Vorgang abgeschlossen ist, andernfalls false.

Wenn diese Eigenschaft true ist, kann davon ausgegangen werden, dass die für den asynchronen Vorgang reservierten Ressourcen freigegeben werden dürfen.

Hinweise zur Implementierung

Normalerweise wird als Wert dieser Eigenschaften der Wert eines privaten Felds oder eines internen Tests zurückgegeben.

Hinweise zu Aufrufern

Clients, die den Status des Vorgangs abfragen (anstatt auf ein Synchronisierungsobjekt zu warten), können mit dieser Eigenschaft den Status des Vorgangs bestimmen.

Im folgenden Beispiel wird die Verwendung der IsCompleted-Eigenschaft des IAsyncResult veranschaulicht, um festzustellen, wann ein asynchroner Aufruf abgeschlossen ist. In diesem Fall wird der asynchrone Aufruf mit der BeginInvoke-Methode eines Delegaten ausgeführt. Sie können die IsCompleted-Eigenschaft zum Abrufen der Beendigung verwenden, wenn der asynchrone Aufruf aus einem Thread für die Benutzeroberfläche erfolgt. Durch das Abrufen der Beendigung kann die Verarbeitung vom aufrufenden Thread fortgesetzt werden, während der asynchrone Aufruf für einen ThreadPool-Thread ausgeführt wird.

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

            // Poll while simulating work.
            while(result.IsCompleted == false) {
                Thread.Sleep(250);
                Console.Write(".");
            }

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

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

/* This example produces output similar to the following:

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


.NET Framework

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

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 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)

Es werden nicht alle Versionen sämtlicher Plattformen von .NET Framework unterstützt.. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Vielen Dank für Ihr Feedback.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft. Alle Rechte vorbehalten.