Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Proprietà IAsyncResult.IsCompleted

 

Data di pubblicazione: ottobre 2016

Ottiene un valore che indica l'eventuale completamento dell'operazione asincrona.

Spazio dei nomi:   System
Assembly:  mscorlib (in mscorlib.dll)

bool IsCompleted { get; }

Valore proprietà

Type: System.Boolean

true se l'operazione viene completata. In caso contrario, false.

Quando questa proprietà è true, si può ritenere sicuro annullare eventuali risorse allocate per l'utilizzo dall'operazione asincrona.

Note per gli implementatori:

Gli implementatori restituirà in genere il valore di un campo privato o interno come valore di questa proprietà.

Note per i chiamanti:

I client che eseguono il polling dello stato dell'operazione (in contrapposizione in attesa di un oggetto di sincronizzazione) utilizzano questa proprietà per determinare lo stato dell'operazione.

Nell'esempio seguente viene illustrato come utilizzare il IsCompleted proprietà del IAsyncResult per rilevare quando viene completata una chiamata asincrona. In questo caso, viene effettuata la chiamata asincrona utilizzando il BeginInvoke metodo di un delegato. È possibile utilizzare il IsCompleted proprietà per eseguire il polling per i servizi di completamento quando si effettua la chiamata asincrona da un thread che l'interfaccia utente. Il polling del completamento consente al thread chiamante di continuare l'esecuzione mentre viene eseguita la chiamata asincrona su un thread ThreadPool.

Nell'esempio è costituito da due classi: classe che contiene il metodo che viene chiamato in modo asincrono e la classe che contiene il Main metodo che effettua la chiamata.

Per ulteriori informazioni e ulteriori esempi di chiamata asincrona dei metodi tramite delegati, vedere 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.".
 */

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 1.1
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: