IAsyncAction Antarmuka

Definisi

Mewakili tindakan asinkron. Ini adalah jenis pengembalian untuk banyak metode asinkron Windows Runtime 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 Windows Runtime yang tidak mengkomunikasikan objek hasil, atau kemajuan yang sedang berlangsung. Ini merupakan lebih dari 300 API Windows Runtime yang berbeda. API yang melaporkan kemajuan (tetapi tidak memiliki hasil) menggunakan antarmuka lain, IAsyncActionWithProgress<TProgress>.

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 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).

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 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 sintaksis saat itu/selesai . .NET memiliki metode ekstensi AsTask , dan setelah IAsyncAction dikonversi ke Tugas, 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 Windows Runtime menggunakan jenis tindakan kustom (yang mungkin memiliki "Operasi" daripada "Tindakan" dalam namanya). Misalnya, SignOutUserOperation adalah jenis Windows Runtime yang mengimplementasikan IAsyncAction. Jenis SignOutUserOperation kemudian digunakan sebagai jenis pengembalian tindakan kustom untuk metode SignOutUserAsync .

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