Condividi tramite


IAsyncActionWithProgress<TProgress> Interfaccia

Definizione

Rappresenta un'azione asincrona in grado di segnalare gli aggiornamenti dello stato di avanzamento ai chiamanti. Questo è il tipo restituito per tutti i metodi asincroni Windows Runtime che non hanno un oggetto risultato, ma segnalano lo stato di avanzamento ai listener di callback.

public interface class IAsyncActionWithProgress : IAsyncInfo
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.FoundationContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(527282776, 59395, 18593, 149, 70, 235, 115, 83, 57, 136, 132)]
template <typename TProgress>
struct IAsyncActionWithProgress : IAsyncInfo
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.FoundationContract), 65536)]
[Windows.Foundation.Metadata.Guid(527282776, 59395, 18593, 149, 70, 235, 115, 83, 57, 136, 132)]
public interface IAsyncActionWithProgress<TProgress> : IAsyncInfo
Public Interface IAsyncActionWithProgress(Of TProgress)
Implements IAsyncInfo

Parametri di tipo

TProgress
Attributi
Implementazioni

Requisiti Windows

Famiglia di dispositivi
Windows 10 (è stato introdotto in 10.0.10240.0)
API contract
Windows.Foundation.FoundationContract (è stato introdotto in v1.0)

Esempio

Ad esempio, il codice C++/WinRT che illustra come gestire l'evento Progress , vedi Tipi delegati per azioni e operazioni asincrone.

Commenti

IAsyncActionWithProgress TProgress<> è il tipo restituito per tutti i metodi asincroni Windows Runtime che non comunicano un oggetto risultato, ma consentono a un'app di controllare lo stato dell'azione. Non esistono quasi tutti questi metodi, perché esistono metodi che usano IAsyncAction. Iasyncaction Le API non segnalano lo stato di avanzamento e non hanno un risultato.

Quando usi metodi che restituiscono IAsyncActionWithProgress TProgress<> nel codice dell'app, in genere non accedi direttamente al valore restituito IAsyncAction. Questo perché si usa quasi sempre la sintassi awaitable specifica del linguaggio. In questo caso, il valore restituito apparente del metodo è void. Per altre informazioni, vedere Programmazione asincrona o una delle guide specifiche del linguaggio per Windows Runtime programmazione asincrona (Chiamare API asincrone in C# o Visual Basic, C++, JavaScript).

Non è comune usare direttamente IAsyncActionWithProgress TProgress<> anche se non si usa una sintassi awaitable specifica del linguaggio. Ogni linguaggio include punti di estensione che sono in genere più facili da usare rispetto all'interfaccia Windows Runtime. JavaScript include WinJS.Promise e la sintassi onProgress. .NET include i metodi di estensione AsTask e dopo che IAsyncActionWithProgress TProgress<> viene convertito in un'attività, è più facile annullare, ricevere notifiche al completamento, usare IProgress<T> e così via. Per C++/CX, è possibile eseguire il wrapping delle chiamate usando il runtime di concorrenza (e usare create_task). In altre parole, IAsyncActionWithProgress TProgress<> può essere considerato un'infrastruttura a livello di runtime, che ogni linguaggio usa come framework per supportare modelli di programmazione asincroni o sintassi awaitable in modo autonomo.

In particolare, se si vuole gestire lo stato di avanzamento nel codice .NET, usare la firma AsTask che in un utilizzo dell'estensione ha un singolo parametro di riferimento IProgress . In questo utilizzo, l'unità di stato è già vincolata e corrisponde al metodo IAsyncActionWithProgress in uso. Fornire un oggetto che implementa IProgress e l'implementazione del metodo Report viene richiamata ogni volta che il metodo Windows Runtime segnala una notifica di stato.

Per monitorare lo stato di avanzamento dell'azione (se non si usano le tecniche specifiche del linguaggio descritte in precedenza), impostare la proprietà Progress, specificando il nome di un metodo che implementa il delegato TProgress AsyncActionProgressHandler<.>

Funzioni di estensione C++/WinRT

Nota

Le funzioni di estensione esistono nei tipi di proiezione C++/WinRT per determinate API di Windows Runtime. Ad esempio, winrt::Windows::Foundation::IAsyncAction è il tipo di proiezione C++/WinRT per IAsyncAction. Le funzioni di estensione non fanno parte della superficie ABI (Application Binary Interface) dei tipi di Windows Runtime effettivi, quindi non sono elencati come membri delle API Windows Runtime. Ma puoi chiamarli da qualsiasi progetto C++/WinRT. Vedi Funzioni C++/WinRT che estendono Windows Runtime API.

void get() const;

Attende in modo sincrono il completamento dell'azione. Genera un'eccezione corrispondente se l'azione viene annullata o entra in uno stato di errore. Non è necessario chiamarlo da un apartment a thread singolo. Per altre info ed esempi di codice che illustrano come chiamare get, vedi Scrivere una coroutine.

AsyncStatus wait_for(TimeSpan const& timeout) const;

Attende in modo sincrono il completamento dell'azione o il timeout specificato. Restituisce lo stato di IAsyncActionWithProgress o AsyncStatus::Started se il timeout è trascorso. Se l'azione non si è timeout, chiamare GetResults per ottenere i risultati dell'azione. Per altre info ed esempi di codice che illustrano come chiamare wait_for, vedi Timeout asincroni semplificati.

Ereditarietà dell'interfaccia

IAsyncActionWithProgress TProgress<> eredita IAsyncInfo. I tipi che implementano IAsyncActionWithProgress<TProgress> implementano anche i membri dell'interfaccia di IAsyncInfo:

Note per gli implementatori

Come per chiamare i metodi esistenti, esistono modi specifici del linguaggio per definire metodi asincroni che non usano direttamente IAsyncActionWithProgress TProgress<>. Se si scrive codice con .NET, il metodo può restituire un oggetto Task. Per C++/CX, è possibile usare il runtime di concorrenza. Tuttavia, se si definisce un componente, è possibile usarel'attivitàAttività/ internamente, ma è necessario restituire una delle interfacce Windows Runtime per i metodi pubblici. I tipi di supporto asincrono specifici del linguaggio (e molti altri tipi specifici del linguaggio che potresti usare in modo convenzionale nel codice) non possono essere usati per l'area di attacco pubblica di un componente Windows Runtime.

Proprietà

Completed

Ottiene o imposta il delegato chiamato al termine dell'azione.

ErrorCode

Ottiene una stringa che descrive una condizione di errore dell'operazione asincrona.

(Ereditato da IAsyncInfo)
Id

Ottiene l'handle dell'operazione asincrona.

(Ereditato da IAsyncInfo)
Progress

Ottiene o imposta il metodo di callback che riceve la notifica di stato.

Status

Ottiene un valore che indica lo stato dell'operazione asincrona.

(Ereditato da IAsyncInfo)

Metodi

Cancel()

Annulla l'operazione asincrona.

(Ereditato da IAsyncInfo)
Close()

Chiude l'operazione asincrona.

(Ereditato da IAsyncInfo)
GetResults()

Restituisce i risultati dell'azione.

Si applica a

Vedi anche