ValueTask Struktur
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.
Memberikan hasil yang dapat ditunggu dari operasi asinkron.
public value class ValueTask : IEquatable<System::Threading::Tasks::ValueTask>
public readonly struct ValueTask : IEquatable<System.Threading.Tasks.ValueTask>
type ValueTask = struct
Public Structure ValueTask
Implements IEquatable(Of ValueTask)
- Warisan
- Penerapan
Keterangan
Instans ValueTask dapat ditunggu atau dikonversi ke Task menggunakan AsTask. Instans ValueTask hanya dapat ditunggu sekali, dan konsumen mungkin tidak menelepon GetAwaiter() sampai instans selesai. Jika batasan ini tidak dapat diterima, konversikan ValueTask ke dengan Task memanggil AsTask.
Operasi berikut tidak boleh dilakukan pada ValueTask instans:
- Menunggu instans beberapa kali.
- Memanggil AsTask beberapa kali.
- Menggunakan lebih dari salah satu teknik ini untuk mengonsumsi instans.
Jika Anda melakukan salah satu hal di atas, hasilnya tidak ditentukan.
ValueTask adalah struktur yang dapat membungkus atau TaskIValueTaskSource instans. Mengembalikan ValueTask yang membungkus instans IValueTaskSource dari metode asinkron memungkinkan aplikasi throughput tinggi untuk menghindari alokasi dengan menggunakan kumpulan objek yang dapat IValueTaskSource digunakan kembali. Untuk informasi selengkapnya, lihat Memahami Alasan, Apa, dan kapan ValueTask.
ValueTask Menggunakan alih-alih Task memperkenalkan beberapa overhead. Karena ValueTask merupakan struktur dengan beberapa bidang, mengembalikannya dari metode menghasilkan penyalinan lebih banyak data dibandingkan dengan mengembalikan satu Task referensi. Dengan demikian, pilihan default untuk metode asinkron apa pun yang tidak mengembalikan hasil harus mengembalikan Task. Hanya jika analisis performa membuktikan ada baiknya jika ValueTask digunakan alih-alih Task. Properti Task.CompletedTask harus digunakan untuk mengembalikan singleton yang berhasil diselesaikan dalam kasus di mana metode yang Task mengembalikan selesai secara sinkron dan berhasil.
Note
Penggunaan jenis ValueTask didukung dimulai dengan C# 7.0 dan tidak didukung oleh versi Visual Basic apa pun.
Note
Instans yang dibuat dengan konstruktor tanpa parameter atau dengan default(ValueTask) sintaks (struktur yang diinisialisasi nol) mewakili operasi yang berhasil diselesaikan secara sinkron.
Konstruktor
| Nama | Deskripsi |
|---|---|
| ValueTask(IValueTaskSource, Int16) |
Menginisialisasi instans ValueTask baru kelas menggunakan objek yang disediakan IValueTaskSource yang mewakili operasi. |
| ValueTask(Task) |
Menginisialisasi instans ValueTask baru kelas menggunakan tugas yang disediakan yang mewakili operasi. |
Properti
| Nama | Deskripsi |
|---|---|
| CompletedTask |
Mendapatkan tugas yang telah berhasil diselesaikan. |
| IsCanceled |
Mendapatkan nilai yang menunjukkan apakah objek ini mewakili operasi yang dibatalkan. |
| IsCompleted |
Mendapatkan nilai yang menunjukkan apakah objek ini mewakili operasi yang selesai. |
| IsCompletedSuccessfully |
Mendapatkan nilai yang menunjukkan apakah objek ini mewakili operasi yang berhasil diselesaikan. |
| IsFaulted |
Mendapatkan nilai yang menunjukkan apakah objek ini mewakili operasi yang gagal. |
Metode
| Nama | Deskripsi |
|---|---|
| AsTask() | |
| ConfigureAwait(Boolean) |
Mengonfigurasi awaiter untuk nilai ini. |
| Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan instans saat ini ValueTask . |
| Equals(ValueTask) |
Menentukan apakah objek yang ditentukan ValueTask sama dengan objek saat ini ValueTask . |
| FromCanceled(CancellationToken) |
ValueTask Membuat yang telah selesai karena pembatalan dengan token pembatalan yang ditentukan. |
| FromCanceled<TResult>(CancellationToken) |
ValueTask<TResult> Membuat yang telah selesai karena pembatalan dengan token pembatalan yang ditentukan. |
| FromException(Exception) |
Membuat yang ValueTask telah selesai dengan pengecualian yang ditentukan. |
| FromException<TResult>(Exception) |
Membuat yang ValueTask<TResult> telah selesai dengan pengecualian yang ditentukan. |
| FromResult<TResult>(TResult) |
ValueTask<TResult> Membuat yang berhasil diselesaikan dengan hasil yang ditentukan. |
| GetAwaiter() |
Membuat awaiter untuk nilai ini. |
| GetHashCode() |
Mengembalikan kode hash untuk instans ini. |
| Preserve() |
ValueTask Mendapatkan yang dapat digunakan kapan saja di masa mendatang. |
Operator
| Nama | Deskripsi |
|---|---|
| Equality(ValueTask, ValueTask) |
Membandingkan dua ValueTask nilai untuk kesetaraan. |
| Inequality(ValueTask, ValueTask) |
Menentukan apakah dua ValueTask nilai tidak sama. |