Bagikan melalui


IAsyncAction Antarmuka

Definisi

Mewakili tindakan asinkron. Ini adalah jenis pengembalian untuk banyak metode asinkron Windows Runtime (WinRT) yang tidak memiliki objek hasil, dan tidak melaporkan kemajuan yang sedang berlangsung.

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
Turunan
Atribut
Penerapan

Persyaratan Windows

Rangkaian perangkat
Windows 10 (diperkenalkan dalam 10.0.10240.0)
API contract
Windows.Foundation.FoundationContract (diperkenalkan dalam v1.0)

Keterangan

IAsyncAction adalah jenis pengembalian untuk semua metode asinkron WinRT yang tidak mengkomunikasikan objek hasil, atau kemajuan yang sedang berlangsung. Ini merupakan lebih dari 300 API WinRT yang berbeda. API yang melaporkan kemajuan tetapi tidak memiliki hasil menggunakan antarmuka lain, IAsyncActionWithProgress.

Saat Anda menggunakan metode yang mengembalikan IAsyncAction dalam kode aplikasi, Anda biasanya tidak mengakses nilai pengembalian IAsyncAction secara langsung. Itu karena Anda hampir selalu menggunakan sintaksis yang dapat ditunggu khusus bahasa. Dalam hal ini, nilai pengembalian yang jelas dari metode ini kekosongan . Untuk informasi selengkapnya, lihat pemrograman asinkron, atau salah satu panduan khusus bahasa untuk pemrograman asinkron WinRT (Memanggil API asinkron di C# atau Visual Basic, C++, JavaScript).

IAsyncAction juga merupakan jenis input untuk beberapa API utilitas skenario lanjutan seperti CoreDispatcher.RunAsync dan ThreadPool.RunAsync.

Tidak umum untuk menggunakan IAsyncAction secara langsung bahkan jika Anda tidak menggunakan sintaks yang dapat ditunggu khusus bahasa. Masing-masing bahasa memiliki titik ekstensi yang umumnya lebih mudah digunakan daripada antarmuka WinRT. JavaScript memiliki WinJS.Promise, dan sintaks then/done. .NET memiliki metode ekstensi AsTask, dan setelah dikonversi keTugas , lebih mudah untuk membatalkan, mendapatkan pemberitahuan tentang penyelesaian, dan sebagainya. Untuk C++/CX, Anda dapat membungkus panggilan menggunakan runtime Konkurensi (dan menggunakan create_task). Dengan kata lain, IAsyncAction dapat dianggap sebagai infrastruktur tingkat runtime, yang digunakan masing-masing bahasa sebagai kerangka kerja untuk mendukung sintaks yang dapat ditunggu atau model pemrograman asinkron dengan cara mereka sendiri.

Alih-alih menggunakan IAsyncAction, beberapa metode asinkron WinRT menggunakan jenis tindakan kustom (yang mungkin memiliki "Operasi" daripada "Tindakan" atas namanya). Misalnya, SignOutUserOperation adalah jenis WinRT yang mengimplementasikan . Jenis SignOutUserOperation kemudian digunakan sebagai jenis pengembalian tindakan kustom untuk metode SignOutUserAsync .

Jika Anda memiliki metode yang mengembalikan .NET dan memerlukan untuk meneruskan ke API WinRT, Anda dapat menggunakan metode ekstensi AsAsyncAction.

Fungsi ekstensi C++/WinRT

Nota

Fungsi ekstensi ada pada jenis proyeksi C++/WinRT untuk API WinRT tertentu. Misalnya, winrt::Windows::Foundation::IAsyncAction adalah jenis proyeksi C++/WinRT untuk IAsyncAction. Fungsi ekstensi bukan bagian dari permukaan antarmuka biner aplikasi (ABI) dari jenis WinRT yang sebenarnya, sehingga tidak terdaftar sebagai anggota API WinRT. Tetapi Anda dapat memanggilnya dari dalam proyek C++/WinRT apa pun. Lihat fungsi C++/WinRT yang memperluas API Windows Runtime.

void get() const;

Menunggu secara sinkron agar tindakan selesai. Memberikan pengecualian yang sesuai jika tindakan dibatalkan, atau memasuki status kesalahan. Anda tidak boleh menyebutnya dari apartemen berulir tunggal. Untuk informasi selengkapnya, dan contoh kode yang menunjukkan cara memanggil get, lihat Menulis coroutine.

AsyncStatus wait_for(TimeSpan const& timeout) const;

Menunggu secara sinkron agar tindakan selesai, atau untuk batas waktu yang ditentukan. Mengembalikan status IAsyncAction, atau AsyncStatus::Started jika batas waktu berlalu. Jika tindakan tidak kehabisan waktu, panggil GetResults untuk mendapatkan hasil tindakan. Untuk informasi selengkapnya, dan contoh kode yang menunjukkan cara memanggil wait_for, lihat batas waktu Asinkron menjadi mudah.

Pewarisan antarmuka

IAsyncAction mewarisi IAsyncInfo. Jenis yang mengimplementasikan IAsyncAction juga mengimplementasikan anggota antarmuka IAsyncInfo:

Catatan untuk pelaksana

Seperti halnya memanggil metode yang ada, ada cara khusus bahasa untuk menentukan metode asinkron yang tidak menggunakan IAsyncInfo secara langsung. Jika menulis kode menggunakan .NET, metode Anda dapat mengembalikan tugas . Untuk C++/CX, Anda dapat menggunakan runtime Konkurensi. Namun, jika Anda mendefinisikan komponen , Anda dapat menggunakan Task/task secara internal tetapi Anda harus mengembalikan salah satu antarmuka WinRT untuk metode publik Anda. Jenis dukungan asinkron khusus bahasa (dan banyak jenis spesifik bahasa lainnya yang mungkin Anda gunakan dalam kode) tidak dapat digunakan untuk area permukaan publik komponen WinRT.

Properti

Completed

Mendapatkan atau mengatur delegasi yang dipanggil saat tindakan selesai.

ErrorCode

Mendapatkan string yang menjelaskan kondisi kesalahan operasi asinkron.

(Diperoleh dari IAsyncInfo)
Id

Mendapatkan handel operasi asinkron.

(Diperoleh dari IAsyncInfo)
Status

Mendapatkan nilai yang menunjukkan status operasi asinkron.

(Diperoleh dari IAsyncInfo)

Metode

Cancel()

Membatalkan operasi asinkron.

(Diperoleh dari IAsyncInfo)
Close()

Menutup operasi asinkron.

(Diperoleh dari IAsyncInfo)
GetResults()

Mengembalikan hasil tindakan.

Berlaku untuk

Lihat juga