Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 31433|Jawab: 5

[Sumber] .net/c# Kelas tugas dengan async/await

[Salin tautan]
Diposting pada 20/10/2017 22.32.17 | | |
Kelas tugas

Kelas Task adalah abstraksi operasi asinkron yang disediakan setelah .NET 4.0, dengan jalur lengkap ke System.Threading.Tasks.Task.

Kelas Task digunakan untuk mewakili operasi asinkron tanpa nilai pengembalian, dan untuk operasi asinkron dengan nilai pengembalian, subkelas Task dari kelas Task harus digunakan<TResult>.
Tugas yang dibuat oleh kelas Tugas ditambahkan ke kumpulan utas.

<TResult>Konstruktor utama kelas Task/Task adalah sebagai berikut:


Setelah dibuat, tugas dapat dimulai menggunakan metode Start():


Dalam pengembangan aktual, metode statis Run() dari kelas Task atau metode anggota StartNew() dari kelas pabrik TaskFactory lebih sering digunakan untuk membuat dan memulai tugas baru.

Beberapa metode umum di kelas Task:


Kata kunci async/await

C# 5.0 memperkenalkan kata kunci asinkron dan await, yang memberikan dukungan yang lebih baik untuk konkurensi di tingkat bahasa.

Async digunakan untuk menandai metode asinkron:
Kata kunci asinkron adalah kata kunci kontekstual dan hanya akan diperlakukan sebagai kata kunci saat memodifikasi metode dan Lambda, dan akan diperlakukan sebagai pengidentifikasi di area lain.
Kata kunci asinkron dapat menandai metode statis, tetapi bukan titik masuk (metode Main().
Nilai yang dikembalikan dari metode yang ditandai dengan asinkron harus <TResult>salah satu dari Tugas, Tugas, atau void.
await digunakan untuk menunggu hasil metode asinkron:
Kata kunci await juga merupakan kata kunci kontekstual dan hanya dianggap sebagai kata kunci dalam metode yang ditandai asinkron.
Kata kunci await dapat digunakan sebelum metode asinkron dan Task, dan <TResult>Task, untuk menunggu akhir eksekusi tugas asinkron.
Struktur metode asinkron sederhana adalah sebagai berikut:
Bukan berarti metode ditandai dengan kata kunci asinkron, ini adalah metode asinkron, dan pernyataan yang muncul langsung di dalam metode asinkron juga dijalankan secara sinkronKonten yang dijalankan secara asinkron perlu dijalankan menggunakan kelas Task
Faktanya, metode asinkron yang tidak berisi pernyataan await akan dieksekusi secara sinkron, di mana kompiler akan memberikan peringatan.

Contoh sederhana, menggunakan async/await untuk mengeluarkan konten secara bersamaan di layar:

Keluaran: (Mono 4.4.0 && ArchLinux x64)

Tidak sulit untuk melihat dari program di atas bahwa dalam kata kunci asinkron yang ditandai metode asinkron, kode sebelum menggunakan await dijalankan secara sinkron, dan setelah await dipanggil, kode yang tersisa berjalan secara asinkron pada utas terpisah.





Mantan:fsadf{:1_2:}
Depan:RestSharp a. Komponen kelas pembantu HTTP NET(C#)
Diposting pada 01/11/2017 19.57.12 |
Lihatlah, lihat, lihat
Diposting pada 29/01/2019 09.37.53 |
Saya mencari untuk waktu yang lama di Baidu #async Task Invoke()Saya mendapati diri saya berdiriMetode di atas menggunakan kata kunci asinkron untuk mengembalikan metode Invoke dari kelas Task, yang juga memecahkan masalah utas, apa arti dari seluruh fungsi ini?
Diposting pada 29/01/2019 21.14.36 |
Ini benar-benar hal yang baik, dan saya akan menulis berbagi seperti ini ketika saya punya waktu
Diposting pada 15/02/2019 16.17.22 |
Hasil output tidak dapat dengan jelas melihat efek eksekusi asinkron, dan input asinkron harus simultan
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com