IAsyncOperationWithProgress<TResult,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 operasi asinkron yang dapat melaporkan pembaruan kemajuan kepada pemanggil. Ini adalah jenis pengembalian untuk banyak metode asinkron Windows Runtime yang memiliki hasil dan juga melaporkan kemajuan.
public interface class IAsyncOperationWithProgress : IAsyncInfo
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.FoundationContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(3050321623, 58007, 18831, 186, 96, 2, 137, 231, 110, 35, 221)]
template <typename TResult, typename TProgress>
struct IAsyncOperationWithProgress : IAsyncInfo
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.FoundationContract), 65536)]
[Windows.Foundation.Metadata.Guid(3050321623, 58007, 18831, 186, 96, 2, 137, 231, 110, 35, 221)]
public interface IAsyncOperationWithProgress<TResult,TProgress> : IAsyncInfo
Public Interface IAsyncOperationWithProgress(Of TResult, TProgress)
Implements IAsyncInfo
Jenis parameter
- TResult
- TProgress
- 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
IAsyncOperationWithProgress<TResult,TProgress> adalah jenis pengembalian untuk banyak metode asinkron Windows Runtime yang memiliki hasil setelah selesai, dan juga mendukung pemberitahuan yang melaporkan kemajuan (yang dapat berlangganan pemanggil dengan menetapkan panggilan balik untuk Kemajuan). Ini merupakan sekitar 100 API Windows Runtime yang berbeda. API yang tidak melaporkan kemajuan (tetapi memiliki hasil) menggunakan antarmuka lain, IAsyncOperation<TResult>.
Saat Anda menggunakan metode yang mengembalikan IAsyncOperationWithProgress<TResult,TProgress> (dengan batasan spesifik TResult ) dalam kode aplikasi, Anda biasanya tidak mengakses nilai pengembalian IAsyncOperationWithProgress secara langsung. Itu karena Anda hampir selalu menggunakan sintaksis yang dapat ditunggu khusus bahasa. Dalam hal ini, nilai pengembalian yang jelas dari metode adalah jenis yang disediakan sebagai parameter TResult . 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 IAsyncOperationWithProgress<TResult,TProgress> 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 Windows Runtime. JavaScript memiliki WinJS.Promise, dan sintaksis saat itu/selesai . .NET memiliki metode ekstensi AsTask , dan setelah IAsyncOperationWithProgress<TResult, TProgress> dikonversi ke Task<TResult>, lebih mudah untuk mendapatkan hasilnya, membatalkan, mendapatkan pemberitahuan tentang penyelesaian, dan sebagainya. Untuk C++/CX, Anda dapat membungkus panggilan menggunakan runtime Konkurensi (dan menggunakan create_task). Dengan kata lain, IAsyncOperationWithProgress<TResult,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 IAsyncOperationWithProgress 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 AsyncOperationProgressHandler<TResult,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.
TResult get() const;
Menunggu secara sinkron agar operasi selesai, dan mengembalikan nilai yang telah selesai. Memberikan pengecualian yang sesuai jika operasi 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 operasi selesai, atau untuk batas waktu yang ditentukan. Mengembalikan status IAsyncOperationWithProgress, atau AsyncStatus::Started jika batas waktu berlalu. Jika tindakan tidak kehabisan waktu, panggil GetResults untuk mendapatkan hasil operasi. Untuk informasi selengkapnya, dan contoh kode yang menunjukkan cara memanggil wait_for, lihat Batas waktu asinkron menjadi mudah.
Pewarisan antarmuka
IAsyncOperationWithProgress<TResult,TProgress> mewarisi IAsyncInfo. Jenis yang mengimplementasikan IAsyncOperationWithProgress<TResult,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 IAsyncOperationWithProgress<TResult,TProgress> secara langsung. Jika menulis kode menggunakan .NET, metode Anda dapat mengembalikan Task<TResult>. 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 operasi 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 yang menangani 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 operasi. |