Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

IAsyncResult.IsCompleted-Eigenschaft

 

Veröffentlicht: Oktober 2016

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

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

bool IsCompleted { get; }

Eigenschaftswert

Type: System.Boolean

true, wenn der Vorgang abgeschlossen ist, andernfalls false.

Wenn diese Eigenschaft den Wert true, können Sie davon ausgehen kann gefahrlos alle Ressourcen verwerfen Sie für die Verwendung des asynchronen Vorgangs weisen.

Hinweise für Implementierer:

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

Hinweise für Aufrufer:

Clients, von denen Abrufens von Vorgangsstatus (im Gegensatz zum Warten auf ein Synchronisierungsobjekt) verwenden Sie diese Eigenschaft auf um den Status des Vorgangs zu bestimmen.

Das folgende Beispiel zeigt, wie Sie die IsCompleted Eigenschaft von der IAsyncResult zu ermitteln, wann ein asynchrone Aufruf abgeschlossen wird. Der asynchrone Aufruf erfolgt in diesem Fall mithilfe der BeginInvoke Methode eines Delegaten. Sie können die IsCompleted Eigenschaft zum Abrufen der Beendigung verwenden, wenn dem asynchronen Aufruf aus einem Thread vornehmen, die 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: die Klasse enthält die Methode, die asynchron aufgerufen wird und die Klasse enthält die Main -Methode, die den Aufruf durchführt.

Weitere Informationen und Beispiele zum asynchronen Aufrufen von Methoden mithilfe von Delegaten, finden Sie unter Calling Synchronous Methods Asynchronously.

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.".
 */

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: