Pemrograman asinkron

Topik ini menjelaskan pemrograman asinkron di Platform Windows Universal (UWP) dan representasinya di C#, Microsoft Visual Basic .NET, C++, dan JavaScript.

Menggunakan pemrograman asinkron membantu aplikasi Anda tetap responsif saat bekerja yang mungkin memakan waktu lama. Misalnya, aplikasi yang mengunduh konten dari Internet mungkin menghabiskan beberapa detik menunggu konten tiba. Jika Anda menggunakan metode sinkron pada utas UI untuk mengambil konten, aplikasi diblokir hingga metode kembali. Aplikasi ini tidak akan menanggapi interaksi pengguna, dan karena tampaknya tidak responsif, pengguna mungkin menjadi frustrasi. Cara yang jauh lebih baik adalah menggunakan pemrograman asinkron, di mana aplikasi terus berjalan dan merespons UI sambil menunggu operasi selesai.

Untuk metode yang mungkin membutuhkan waktu lama untuk diselesaikan, pemrograman asinkron adalah norma dan bukan pengecualian dalam UWP. JavaScript, C#, Visual Basic, dan C++ masing-masing menyediakan dukungan bahasa untuk metode asinkron.

Pemrograman asinkron di UWP

Banyak fitur UWP, seperti API MediaCapture dan API StorageFile , diekspos sebagai API asinkron. Menurut konvensi, nama-nama API asinkron berakhir dengan "Asinkron" untuk menunjukkan bahwa bagian dari eksekusi mereka kemungkinan akan berlangsung setelah kontrol kembali ke pemanggil.

Saat Anda menggunakan API asinkron di aplikasi Platform Windows Universal (UWP), kode Anda melakukan panggilan non-pemblokiran dengan cara yang konsisten. Saat Anda menerapkan pola asinkron ini dalam definisi API Anda sendiri, penelepon dapat memahami dan menggunakan kode Anda dengan cara yang dapat diprediksi.

Berikut adalah beberapa tugas umum yang memerlukan panggilan API Windows Runtime asinkron.

  • Menampilkan dialog pesan

  • Bekerja dengan sistem file, menampilkan pemilih file

  • Mengirim dan menerima data ke dan dari Internet

  • Menggunakan soket, aliran, konektivitas

  • Bekerja dengan janji temu, kontak, kalender

  • Bekerja dengan jenis file, seperti membuka file Portable Document Format (PDF) atau mendekode gambar atau format media

  • Berinteraksi dengan perangkat atau layanan

Dengan pola asinkron UWP, Anda mungkin dapat menghindari mengelola utas secara eksplisit sama sekali. Setiap bahasa pemrograman mendukung pola asinkron untuk UWP dengan caranya sendiri:

Bahasa pemrograman Representasi asinkron
C# kata kunci asinkron, operator tunggu
Visual Basic Kata kunci asinkron, Operator tunggu
C++/WinRT operator coroutine, dan co_await
C++/CX kelas tugas, metode .then
JavaScript objek promise, lalu fungsi

Pola asinkron di UWP menggunakan C# dan Visual Basic

Segmen kode khas yang ditulis dalam C# atau Visual Basic dijalankan secara sinkron, yang berarti bahwa ketika garis dijalankan, itu selesai sebelum baris berikutnya dijalankan. Ada model pemrograman Microsoft .NET sebelumnya untuk eksekusi asinkron, tetapi kode yang dihasilkan cenderung menekankan mekanisme menjalankan kode asinkron alih-alih berfokus pada tugas yang coba dicapai kode. Pengompilasi UWP, .NET framework, dan C# dan Visual Basic telah menambahkan fitur yang mengabstraksikan mekanika asinkron dari kode Anda. Untuk .NET dan UWP, Anda dapat menulis kode asinkron yang berfokus pada apa yang dilakukan kode Anda alih-alih bagaimana dan kapan melakukannya. Kode asinkron Anda akan terlihat cukup mirip dengan kode sinkron. Untuk informasi selengkapnya, lihat Memanggil API asinkron di C# atau Visual Basic.

Pola asinkron di UWP dengan C++/WinRT

Dengan C++/WinRT, Anda menggunakan coroutines, dan operator co_await . Untuk informasi selengkapnya, dan contoh kode, lihat Pemrograman asinkron di C++/WinRT.

Pola asinkron di UWP dengan C++/CX

Dalam C++/CX, pemrograman asinkron didasarkan pada kelas tugas, dan metodenya saat itu. Sintaksnya mirip dengan janji JavaScript. Kelas tugas dan jenis terkaitnya juga menyediakan kemampuan untuk pembatalan dan manajemen konteks utas. Untuk informasi selengkapnya, lihat Pemrograman asinkron di C++/CX.

Fungsi create_async menyediakan dukungan untuk menghasilkan API asinkron yang dapat dikonsumsi dari JavaScript atau bahasa lain yang mendukung UWP. Untuk informasi selengkapnya, lihat Membuat Operasi Asinkron di C++/CX.

Pola asinkron di UWP menggunakan JavaScript

Dalam JavaScript, pemrograman asinkron mengikuti standar Common JS Promises/A yang diusulkan dengan memiliki metode asinkron mengembalikan objek promise. Janji digunakan di UWP dan Pustaka Windows untuk JavaScript.

Objek janji mewakili nilai yang akan dipenuhi di masa depan. Di UWP Anda mendapatkan objek janji dari fungsi pabrik, yang menurut konvensi memiliki nama yang diakhapi dengan "Asinkron".

Dalam banyak kasus, memanggil fungsi asinkron hampir sama sederhananya dengan memanggil fungsi konvensional. Perbedaannya adalah Anda menggunakan metode saat itu atau selesai untuk menetapkan penangan untuk hasil atau kesalahan dan untuk memulai operasi.