IAsyncOperation<TResult> Antarmuka

Definisi

Mewakili operasi asinkron, yang mengembalikan hasil setelah selesai. Ini adalah jenis pengembalian untuk banyak metode asinkron Windows Runtime yang memiliki hasil tetapi tidak melaporkan kemajuan.

public interface class IAsyncOperation : IAsyncInfo
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.FoundationContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(2680336571, 58438, 17634, 170, 97, 156, 171, 143, 99, 106, 242)]
template <typename TResult>
struct IAsyncOperation : IAsyncInfo
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.FoundationContract), 65536)]
[Windows.Foundation.Metadata.Guid(2680336571, 58438, 17634, 170, 97, 156, 171, 143, 99, 106, 242)]
public interface IAsyncOperation<TResult> : IAsyncInfo
Public Interface IAsyncOperation(Of TResult)
Implements IAsyncInfo

Jenis parameter

TResult
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

IAsyncOperation<TResult> adalah jenis pengembalian untuk banyak metode asinkron Windows Runtime yang memiliki hasil setelah selesai, tetapi tidak melaporkan kemajuan. Ini merupakan lebih dari 650 API Windows Runtime yang berbeda. API yang melaporkan kemajuan (dan memiliki hasil) menggunakan antarmuka lain, IAsyncOperationWithProgress<TResult,TProgress>.

Saat Anda menggunakan metode yang mengembalikan IAsyncOperation<TResult> (dengan batasan khusus TResult ) dalam kode aplikasi, Anda biasanya tidak mengakses nilai pengembalian IAsyncOperation 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 IAsyncOperation<TResult> secara langsung meskipun 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 IAsyncOperation<TResult> dikonversi ke Task<TResult>, lebih mudah untuk mendapatkan hasilnya, membatalkan, mendapatkan pemberitahuan saat penyelesaian, dan sebagainya. Untuk C++/CX, Anda dapat membungkus panggilan menggunakan runtime Konkurensi (dan menggunakan create_task). Dengan kata lain, IAsyncOperation<TResult> 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 IAsyncOperation<TResult>, beberapa metode asinkron Windows Runtime menggunakan jenis operasi kustom. Misalnya, DataReaderLoadOperation adalah jenis Windows Runtime yang mengimplementasikan IAsyncOperation menggunakan uint sebagai jenis hasil. Jenis DataReaderLoadOperation kemudian digunakan sebagai jenis operasi/hasil kustom untuk metode DataReader.LoadAsync .

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 IAsyncOperation, atau AsyncStatus::Dimulai 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

IAsyncOperation<TResult> mewarisi IAsyncInfo. Jenis yang mengimplementasikan IAsyncOperation<TResult> 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 IAsyncOperation<TResult> 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)
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.

Berlaku untuk

Lihat juga