IAsyncActionWithProgress<TProgress> 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 yang dapat melaporkan pembaruan kemajuan kepada pemanggil. Ini adalah jenis pengembalian untuk semua metode asinkron Windows Runtime yang tidak memiliki objek hasil, tetapi melaporkan kemajuan ke pendengar panggilan balik.
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
Jenis parameter
- TProgress
- Atribut
- Penerapan
Persyaratan Windows
Rangkaian perangkat |
Windows 10 (diperkenalkan dalam 10.0.10240.0)
|
API contract |
Windows.Foundation.FoundationContract (diperkenalkan dalam v1.0)
|
Contoh
Misalnya kode C++/WinRT yang mengilustrasikan cara menangani peristiwa Kemajuan , lihat Mendelegasikan jenis untuk tindakan dan operasi asinkron.
Keterangan
IAsyncActionWithProgress<TProgress> adalah jenis pengembalian untuk semua metode asinkron Windows Runtime yang tidak mengomunikasikan objek hasil, tetapi mengaktifkan aplikasi untuk memeriksa kemajuan tindakan. Tidak ada hampir sebanyak ini karena ada metode yang menggunakan IAsyncAction. IAsyncAction API tidak melaporkan kemajuan dan tidak memiliki hasil.
Saat Anda menggunakan metode yang mengembalikan IAsyncActionWithProgress<TProgress> 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 batal. Untuk informasi selengkapnya, lihat Pemrograman asinkron, atau salah satu panduan khusus bahasa untuk pemrograman asinkron Windows Runtime (Panggil API asinkron di C# atau Visual Basic, C++, JavaScript).
Tidak umum untuk menggunakan IAsyncActionWithProgress<TProgress> secara langsung bahkan jika Anda tidak menggunakan sintaksis khusus bahasa yang dapat ditunggu. Masing-masing bahasa memiliki titik ekstensi yang umumnya lebih mudah digunakan daripada antarmuka Windows Runtime. JavaScript memiliki WinJS.Promise, dan kemudian/dilakukan dengan sintaks onProgress . .NET memiliki metode ekstensi AsTask , dan setelah IAsyncActionWithProgress<TProgress> dikonversi ke Tugas, lebih mudah untuk membatalkan, mendapatkan pemberitahuan saat selesai, menggunakan IProgress<T>, dan sebagainya. Untuk C++/CX, Anda dapat membungkus panggilan menggunakan runtime Konkurensi (dan menggunakan create_task). Dengan kata lain, IAsyncActionWithProgress TProgress<> dapat dianggap sebagai infrastruktur tingkat runtime, yang masing-masing bahasa gunakan sebagai kerangka kerja untuk mendukung sintaks yang dapat ditunggu atau model pemrograman asinkron dengan cara mereka sendiri.
Secara khusus, jika Anda ingin menangani kemajuan dalam kode .NET, gunakan tanda tangan AsTask yang dalam penggunaan ekstensi memiliki satu parameter referensi IProgress . (Dalam penggunaan ini, unit kemajuan sudah dibatasi dan cocok dengan metode IAsyncActionWithProgress yang Anda gunakan.) Berikan objek yang mengimplementasikan IProgress, dan implementasi metode Laporan Anda dipanggil setiap kali metode Windows Runtime melaporkan pemberitahuan kemajuan.
Untuk memantau kemajuan tindakan (jika tidak menggunakan teknik khusus bahasa yang dijelaskan di atas), atur properti Kemajuan , berikan nama metode yang mengimplementasikan delegasi AsyncActionProgressHandler<TProgress> .
Fungsi ekstensi C++/WinRT
Catatan
Fungsi ekstensi ada pada jenis proyeksi C++/WinRT untuk API Windows Runtime 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 Windows Runtime yang sebenarnya, sehingga tidak terdaftar sebagai anggota API Windows Runtime. Tetapi Anda dapat memanggilnya dari dalam proyek C++/WinRT apa pun. Lihat fungsi C++/WinRT yang memperluas WINDOWS Runtime API.
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 dapatkan, lihat Menulis koroutin.
AsyncStatus wait_for(TimeSpan const& timeout) const;
Menunggu secara sinkron agar tindakan selesai, atau untuk batas waktu yang ditentukan. Mengembalikan status IAsyncActionWithProgress, 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
IAsyncActionWithProgress TProgress<> mewarisi IAsyncInfo. Jenis yang mengimplementasikan IAsyncActionWithProgress<TProgress> 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 IAsyncActionWithProgress<TProgress> 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 menggunakantugasTugas/ secara internal tetapi Anda harus mengembalikan salah satu antarmuka Windows Runtime untuk metode publik Anda. Jenis dukungan asinkron khusus bahasa (dan banyak jenis spesifik bahasa lainnya yang mungkin Anda gunakan secara konvensional dalam kode) tidak dapat digunakan untuk area permukaan publik komponen Windows Runtime.
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) |
Progress |
Mendapatkan atau mengatur metode panggilan balik yang menerima pemberitahuan kemajuan. |
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. |