ValueTask Yapı

Tanım

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
ValueTask
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 ValueTaskTask 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()

Bunu ValueTasktemsil eden bir Task nesnesi alır.

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.

Şunlara uygulanır