ValueTask Yapı
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Zaman uyumsuz işlemin beklenebilir bir sonucunu sağlar.
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)
- Devralma
- Uygulamalar
Açıklamalar
Bir ValueTask
örnek beklenebilir veya kullanılarak AsTasköğesine Task dönüştürülebilir. Bir ValueTask
örnek yalnızca bir kez beklenebilir ve tüketiciler örnek tamamlanana kadar çağıramayabilir GetAwaiter() . Bu sınırlamalar kabul edilemezse çağrısı AsTaskyaparak öğesini ValueTask
değerine Task dönüştürün.
Aşağıdaki işlemler hiçbir zaman bir ValueTask
örnekte gerçekleştirilmemelidir:
- Örneği birden çok kez bekliyor.
- Birden çok kez arama AsTask .
- Örneği kullanmak için bu tekniklerden birden fazlasını kullanma.
Yukarıdakilerden birini yaparsanız sonuçlar tanımlanmamış olur.
A ValueTask
, veya örneğini sarmalayan Task bir IValueTaskSource yapıdır. Zaman uyumsuz bir ValueTask
yöntemden bir IValueTaskSource örneği sarmalayan bir döndürülmesi, yüksek aktarım hızına sahip uygulamaların yeniden kullanılabilir IValueTaskSource nesne havuzu kullanarak ayırmaları önlemesini sağlar. Daha fazla bilgi için bkz. ValueTask'in Nedenlerini, Neleri ve Ne Zamanlarını Anlama.
yerine a ValueTask
Task kullanmak bazı ek yük getirir.
ValueTask
Birden çok alanı olan bir yapı olduğundan, bunu yöntemden döndürmek, tek Task bir başvuru döndürmeye kıyasla daha fazla veri kopyalamayla sonuçlanır. Bu nedenle, sonuç döndürmeyen herhangi bir zaman uyumsuz yöntem için varsayılan seçenek bir Taskdöndürmek olmalıdır. Yalnızca performans analizi işe yararsa yerine bir ValueTask
kullanılması Taskgerekir. özelliği, Task.CompletedTask bir yöntemi döndüren bir yöntemin zaman uyumlu ve başarılı bir şekilde tamamlanması durumunda başarıyla tamamlanmış bir Task singletonu geri vermek için kullanılmalıdır.
Not
Türün ValueTask
kullanımı C# 7.0 ile başlayarak desteklenir ve Visual Basic'in herhangi bir sürümü tarafından desteklenmez.
Not
Parametresiz oluşturucuyla veya söz dizimi (sıfır başlatılan bir yapı) ile default(ValueTask)
oluşturulan bir örnek, zaman uyumlu, başarıyla tamamlanmış bir işlemi temsil eder.
Oluşturucular
ValueTask(IValueTaskSource, Int16) |
İşlemi temsil eden sağlanan IValueTaskSource nesneyi kullanarak sınıfının yeni bir örneğini ValueTask başlatır. |
ValueTask(Task) |
İşlemi temsil eden sağlanan görevi kullanarak sınıfının yeni bir örneğini ValueTask başlatır. |
Özellikler
CompletedTask |
Başarıyla tamamlanmış bir görevi alır. |
IsCanceled |
Bu nesnenin iptal edilen işlemi temsil edip etmediğini gösteren bir değer alır. |
IsCompleted |
Bu nesnenin tamamlanmış bir işlemi temsil edip etmediğini gösteren bir değer alır. |
IsCompletedSuccessfully |
Bu nesnenin başarıyla tamamlanmış bir işlemi temsil edip etmediğini gösteren bir değer alır. |
IsFaulted |
Bu nesnenin başarısız bir işlemi temsil edip etmediğini gösteren bir değer alır. |
Yöntemler
AsTask() | |
ConfigureAwait(Boolean) |
Bu değer için bir awaiter yapılandırılır. |
Equals(Object) |
Belirtilen nesnenin geçerli ValueTask örneğe eşit olup olmadığını belirler. |
Equals(ValueTask) |
Belirtilen ValueTask nesnenin geçerli ValueTask nesneye eşit olup olmadığını belirler. |
FromCanceled(CancellationToken) |
Belirtilen iptal belirteciyle iptal nedeniyle tamamlanan bir ValueTask oluşturur. |
FromCanceled<TResult>(CancellationToken) |
Belirtilen iptal belirteciyle iptal nedeniyle tamamlanan bir ValueTask<TResult> oluşturur. |
FromException(Exception) |
Belirtilen özel durumla tamamlanmış bir ValueTask oluşturur. |
FromException<TResult>(Exception) |
Belirtilen özel durumla tamamlanmış bir ValueTask<TResult> oluşturur. |
FromResult<TResult>(TResult) |
Belirtilen sonuçla başarıyla tamamlanan bir ValueTask<TResult> oluşturur. |
GetAwaiter() |
Bu değer için bir awaiter oluşturur. |
GetHashCode() |
Bu örneğe ilişkin karma kodu döndürür. |
Preserve() |
Gelecekte herhangi bir noktada kullanılabilecek bir ValueTask alır. |
İşleçler
Equality(ValueTask, ValueTask) |
Eşitlik için iki ValueTask değeri karşılaştırır. |
Inequality(ValueTask, ValueTask) |
İki ValueTask değerin eşit olmadığını belirler. |