ValueTask Yapı

Tanım

Zaman uyumsuz bir 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 Tasköğesine AsTask dönüştürülebilir. Bir ValueTask örnek yalnızca bir kez beklenebilir ve tüketiciler örnek tamamlanana kadar aramayabilir GetAwaiter() . Bu sınırlamalar kabul edilemezse çağrısı ValueTaskyaparak öğesini Task öğesine AsTask 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 herhangi birini yaparsanız sonuçlar tanımlanmamış olur.

A ValueTask , bir veya örneğini sarmalayan Task bir IValueTaskSource yapıdır. ValueTask Zaman uyumsuz bir 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 nesneler havuzu kullanarak ayırmaları önlemesini sağlar. Daha fazla bilgi için bkz. ValueTask'in Nedenlerini, Neleri ve Ne Zamanlarını Anlama.

yerine bir 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 kopyalamaya neden olur. 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 bunun yararlı olduğunu kanıtlarsa, yerine bir ValueTask kullanılmalıdır Task. özelliği, Task.CompletedTask döndüren bir yöntemin zaman uyumlu ve başarılı bir şekilde tamamlandığı durumlarda başarıyla tamamlanmış bir Task singleton'ı geri vermek için kullanılmalıdır.

Note

ValueTask türünün kullanımı C# 7.0'dan itibaren desteklenir ve Visual Basic herhangi bir sürümü tarafından desteklenmez.

Note

Parametresiz oluşturucuyla veya söz dizimi (sıfır başlatılmış bir yapı) ile default(ValueTask) oluşturulan bir örnek, zaman uyumlu, başarıyla tamamlanmış bir işlemi temsil eder.

Oluşturucular

Name Description
ValueTask(IValueTaskSource, Int16)

İşlemi temsil eden sağlanan ValueTask nesneyi kullanarak sınıfının yeni bir örneğini IValueTaskSource başlatır.

ValueTask(Task)

İşlemi temsil eden sağlanan görevi kullanarak sınıfın yeni bir örneğini ValueTask başlatır.

Özellikler

Name Description
CompletedTask

Başarıyla tamamlanmış bir görevi alır.

IsCanceled

Bu nesnenin iptal edilmiş bir 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

Name Description
AsTask()

Bunu Tasktemsil eden bir ValueTask 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 tamamlanmış bir ValueTask oluşturur.

FromCanceled<TResult>(CancellationToken)

Belirtilen iptal belirteciyle iptal nedeniyle tamamlanmış 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ğin karma kodunu döndürür.

Preserve()

Gelecekte herhangi bir noktada kullanılabilecek bir ValueTask alır.

İşleçler

Name Description
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 olup olmadığını belirler.

Şunlara uygulanır