IAsyncAction Interfaccia

Definizione

Rappresenta un'azione asincrona. Si tratta del tipo restituito per molti metodi asincroni Windows Runtime che non hanno un oggetto risultato e non segnalano lo stato di avanzamento in corso.

public interface class IAsyncAction : IAsyncInfo
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.FoundationContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(1516535814, 33850, 19881, 134, 91, 157, 38, 229, 223, 173, 123)]
struct IAsyncAction : IAsyncInfo
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.FoundationContract), 65536)]
[Windows.Foundation.Metadata.Guid(1516535814, 33850, 19881, 134, 91, 157, 38, 229, 223, 173, 123)]
public interface IAsyncAction : IAsyncInfo
Public Interface IAsyncAction
Implements IAsyncInfo
Derivato
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)

Commenti

IAsyncAction è il tipo restituito per tutti i metodi asincroni Windows Runtime che non comunicano un oggetto risultato o lo stato di avanzamento in corso. Ciò costituisce oltre 300 API di Windows Runtime diverse. Le API che eseguono lo stato di avanzamento del report (ma non hanno un risultato) usano un'altra interfaccia, IAsyncActionWithProgress TProgress<>.

Quando si usano metodi che restituiscono IAsyncAction nel codice dell'app, in genere non si accede direttamente al valore restituito IAsyncAction. Questo perché si usa quasi sempre la sintassi attendabile 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).

IAsyncAction è anche un tipo di input per alcune API di utilità di scenario avanzate, ad esempio CoreDispatcher.RunAsync e ThreadPool.RunAsync.

Non è comune usare direttamente IAsyncAction anche se non si usa una sintassi attendabile specifica del linguaggio. Ognuna delle lingue include punti di estensione che sono in genere più facili da usare rispetto all'interfaccia Windows Runtime. JavaScript ha WinJS.Promise e la sintassi successiva. .NET ha il metodo di estensione AsTask e una volta che IAsyncAction viene convertito in un'attività, è più facile annullare, ottenere una notifica al completamento e così via. Per C++/CX è possibile eseguire il wrapping delle chiamate usando il runtime di concorrenza (e usare create_task). In altre parole, IAsyncAction può essere considerata infrastruttura a livello di runtime, che ognuno dei linguaggi usa come framework per supportare la sintassi attendebile o i modelli di programmazione asincroni in modo personalizzato.

Anziché usare IAsyncAction, alcuni Windows Runtime metodi asincroni usano tipi di azione personalizzati (che potrebbero avere "Operation" anziché "Action" nel nome). Ad esempio, SignOutUserOperation è un tipo Windows Runtime che implementa IAsyncAction. Il tipo SignOutUserOperation viene quindi usato come tipo restituito dell'azione personalizzata per il metodo SignOutUserAsync .

Funzioni di estensione C++/WinRT

Nota

Le funzioni di estensione esistono nei tipi di proiezione C++/WinRT per determinate API 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 dell'interfaccia binaria dell'applicazione (ABI) dei tipi di Windows Runtime effettivi, pertanto non sono elencati come membri delle API Windows Runtime. È tuttavia possibile chiamarli da qualsiasi progetto C++/WinRT. Vedere funzioni C++/WinRT che estendono Windows Runtime API.

void get() const;

Attende il completamento dell'azione in modo sincrono. Genera un'eccezione corrispondente se l'azione viene annullata o immette uno stato di errore. Non è necessario chiamarlo da un appartamento a thread singolo. Per altre informazioni e esempi di codice che illustrano come chiamare get, vedere 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 dell'oggetto IAsyncAction o AsyncStatus::Started se il timeout è trascorso. Se l'azione non ha eseguito il timeout, chiamare GetResults per ottenere i risultati dell'azione. Per altre informazioni e esempi di codice che illustrano come chiamare wait_for, vedere Timeout asincroni semplificati.

Ereditarietà dell'interfaccia

IAsyncAction eredita IAsyncInfo. I tipi che implementano IAsyncAction 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 IAsyncInfo . Se si scrive codice con .NET, il metodo può restituire un'attività. 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 asincroni specifici del linguaggio (e molti altri tipi specifici del linguaggio usati in modo convenzionale nel codice) non possono essere usati per l'area di superficie 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)
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