IAsyncAction Antarmuka
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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 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
Jika Anda memiliki metode yang mengembalikan
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:
- Batalkan metode
- Tutup metode
- properti errorCode
- properti Id
- properti Status
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
- IAsyncInfo
- IAsyncActionWithProgress<TProgress>
- pemrograman asinkron