Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Proprietà IAsyncResult.IsCompleted

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à

Tipo: 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 in un'operazione asincrona.

Note per gli implementatori

In genere, gli implementatori restituiranno il valore di un campo privato o di un test interno come valore di questa proprietà.

Note per i chiamanti

La proprietà viene utilizzata dai client che eseguono il polling dello stato delle operazioni, a differenza di quelli che restano in attesa di un oggetto di sincronizzazione, per determinare lo stato dell'operazione.

Nell'esempio riportato di seguito viene illustrato come utilizzare la proprietà IsCompleted dell'oggetto IAsyncResult per sapere quando una chiamata asincrona viene completata. In questo caso, la chiamata asincrona viene effettuata utilizzando il metodo BeginInvoke di un delegato. È possibile utilizzare la proprietà IsCompleted per eseguire il polling del completamento quando si effettua la chiamata asincrona da un thread dedicato all'interfaccia utente. Il polling del completamento consente di continuare a eseguire il thread chiamante mentre la chiamata asincrona viene eseguita su un thread ThreadPool.

L'esempio è dato da due classi, la classe che contiene il metodo chiamato in modo asincrono e la classe che contiene il metodo Main che effettua la chiamata.

Per ulteriori informazioni e altri esempi di chiamate asincrone ai metodi tramite delegati, vedere Chiamata asincrona dei metodi sincroni.


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

Supportato in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Libreria di classi portabile

Supportato in: Libreria di classi portabile

.NET per applicazioni Windows Store

Supportato in: Windows 8

.NET per applicazioni Windows Phone

Supportato in: Windows Phone 8, Silverlight 8.1

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 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft