İngilizce dilinde oku

Aracılığıyla paylaş


AsyncLocal<T> Sınıf

Tanım

Zaman uyumsuz bir yöntem gibi belirli bir zaman uyumsuz denetim akışı için yerel olan ortam verilerini temsil eder.

C#
public sealed class AsyncLocal<T>

Tür Parametreleri

T

Ortam verilerinin türü.

Devralma
AsyncLocal<T>

Örnekler

Aşağıdaki örnek, bir dize değerini zaman uyumsuz bir akışta kalıcı hale getirmek için sınıfını kullanır AsyncLocal<T> . Ayrıca ile ThreadLocal<T>kullanımını AsyncLocal<T> da karşıttır.

C#
using System;
using System.Threading;
using System.Threading.Tasks;

class Example
{
    static AsyncLocal<string> _asyncLocalString = new AsyncLocal<string>();

    static ThreadLocal<string> _threadLocalString = new ThreadLocal<string>();

    static async Task AsyncMethodA()
    {
        // Start multiple async method calls, with different AsyncLocal values.
        // We also set ThreadLocal values, to demonstrate how the two mechanisms differ.
        _asyncLocalString.Value = "Value 1";
        _threadLocalString.Value = "Value 1";
        var t1 = AsyncMethodB("Value 1");

        _asyncLocalString.Value = "Value 2";
        _threadLocalString.Value = "Value 2";
        var t2 = AsyncMethodB("Value 2");

        // Await both calls
        await t1;
        await t2;
     }

    static async Task AsyncMethodB(string expectedValue)
    {
        Console.WriteLine("Entering AsyncMethodB.");
        Console.WriteLine("   Expected '{0}', AsyncLocal value is '{1}', ThreadLocal value is '{2}'", 
                          expectedValue, _asyncLocalString.Value, _threadLocalString.Value);
        await Task.Delay(100);
        Console.WriteLine("Exiting AsyncMethodB.");
        Console.WriteLine("   Expected '{0}', got '{1}', ThreadLocal value is '{2}'", 
                          expectedValue, _asyncLocalString.Value, _threadLocalString.Value);
    }

    static async Task Main(string[] args)
    {
        await AsyncMethodA();
    }
}
// The example displays the following output:
//   Entering AsyncMethodB.
//      Expected 'Value 1', AsyncLocal value is 'Value 1', ThreadLocal value is 'Value 1'
//   Entering AsyncMethodB.
//      Expected 'Value 2', AsyncLocal value is 'Value 2', ThreadLocal value is 'Value 2'
//   Exiting AsyncMethodB.
//      Expected 'Value 2', got 'Value 2', ThreadLocal value is ''
//   Exiting AsyncMethodB.
//      Expected 'Value 1', got 'Value 1', ThreadLocal value is ''

Açıklamalar

Görev tabanlı zaman uyumsuz programlama modeli iş parçacıklarının kullanımını soyutlama eğiliminde olduğundan, AsyncLocal<T> örnekler verileri iş parçacıkları arasında kalıcı hale getirmek için kullanılabilir.

Sınıfı AsyncLocal<T> ayrıca, geçerli iş parçacığıyla ilişkili değer değiştiğinde isteğe bağlı bildirimler de sağlar; çünkü özellik ayarlanarak Value açıkça değiştirildi veya iş parçacığı bir veya başka bir await bağlam geçişiyle karşılaştığında örtük olarak değiştirildi.

Oluşturucular

AsyncLocal<T>()

Değişiklik bildirimleri almayan bir AsyncLocal<T> örneği başlatır.

AsyncLocal<T>(Action<AsyncLocalValueChangedArgs<T>>)

Değişiklik bildirimleri alan yerel bir AsyncLocal<T> örneği başlatır.

Özellikler

Value

Ortam verilerinin değerini alır veya ayarlar.

Yöntemler

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Şunlara uygulanır

Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0