IAsyncDisposable Arabirim

Tanım

Yönetilmeyen kaynakları zaman uyumsuz olarak serbest bırakmak için bir mekanizma sağlar.Provides a mechanism for releasing unmanaged resources asynchronously.

public interface class IAsyncDisposable
public interface IAsyncDisposable
type IAsyncDisposable = interface
Public Interface IAsyncDisposable
Türetilmiş

Açıklamalar

.NET ' te, yönetilmeyen kaynakları kullanan sınıflar genellikle, IDisposable yönetilmeyen kaynakları zaman uyumlu olarak serbest bırakma mekanizması sağlamak için arabirimini uygular.In .NET, classes that own unmanaged resources usually implement the IDisposable interface to provide a mechanism for releasing unmanaged resources synchronously. Ancak, bazı durumlarda, zaman uyumlu bir kaynağın yanı sıra yönetilmeyen kaynakları serbest bırakmak için (veya yerine) zaman uyumsuz bir mekanizma sağlamaları gerekir.However, in some cases they need to provide an asynchronous mechanism for releasing unmanaged resources in addition to (or instead of) the synchronous one. Böyle bir mekanizmanın sağlanması, tüketicinin bir GUI uygulamasının ana iş parçacığını uzun süre engellemeden Kaynak yoğunluklu atma işlemleri gerçekleştirmesini sağlar.Providing such a mechanism enables the consumer to perform resource-intensive dispose operations without blocking the main thread of a GUI application for a long time.

IAsyncDisposable.DisposeAsyncBu arabirimin yöntemi, ValueTask zaman uyumsuz Dispose işlemini temsil eden bir döndürür.The IAsyncDisposable.DisposeAsync method of this interface returns a ValueTask that represents the asynchronous dispose operation. Yönetilmeyen kaynaklara sahip sınıflar bu yöntemi uygular ve bu sınıfların tüketicisi artık gerekli olmadığında bir nesne üzerinde bu yöntemi çağırır.Classes that own unmanaged resources implement this method, and the consumer of these classes calls this method on an object when it is no longer needed.

Zaman uyumsuz yöntemler async await C# ve Visual Basic içindeki ve anahtar sözcüklerle birlikte kullanılır.The async methods are used in conjunction with the async and await keywords in C# and Visual Basic. Daha fazla bilgi için, bkz. C# ' de görev zaman uyumsuz programlama modeli veya zaman uyumsuz ve await (Visual Basic) Ile zaman uyumsuz programlama.For more insformation, see The Task asynchronous programming model in C# or Asynchronous Programming with Async and Await (Visual Basic).

IAsyncDisposable uygulayan bir nesne kullanmaUsing an object that implements IAsyncDisposable

Uygulamanız uygulayan bir nesne kullanıyorsa IAsyncDisposable , DisposeAsync kullanmayı bitirdiğinizde nesnenin uygulamasını çağırmanız gerekir.If your application uses an object that implements IAsyncDisposable, you should call the object's DisposeAsync implementation when you are finished using it. Bir özel durum söz konusu olduğunda bile kaynakların serbest bırakılmasıyla emin olmak için, nesneyi kullanan kodu IAsyncDisposable using ifadesine koyun (C# ' 8,0 den başlayarak C# ' de) ya da DisposeAsync yöntemi finally deyimin yan tümcesi içinde çağırın try / finally .To make sure resources are released even in case of an exception, put the code that uses the IAsyncDisposable object into the using statement (in C# beginning from version 8.0) or call the DisposeAsync method inside a finally clause of the try/finally statement. Model hakkında daha fazla bilgi için try / finally bkz. try-finally (C#) veya TRY... Yakala... Finally ekstresi (Visual Basic).For more information about the try/finally pattern, see try-finally (C#) or Try...Catch...Finally Statement (Visual Basic).

IAsyncDisposable uygulamaImplementing IAsyncDisposable

IAsyncDisposableAşağıdaki durumlarda uygulamanız gerekir:You might implement IAsyncDisposable in the following situations:

  • Yönetilmeyen kaynaklara sahip bir zaman uyumsuz Numaralandırıcı geliştirilirken.When developing an asynchronous enumerator that owns unmanaged resources. Zaman uyumsuz Numaralandırıcılar C# 8,0 zaman uyumsuz akışlar özelliği ile birlikte kullanılır.Asynchronous enumerators are used with the C# 8.0 async streams feature. Zaman uyumsuz akışlar hakkında daha fazla bilgi için bkz. öğretici: C# 8,0 ve .NET Core 3,0 kullanarak zaman uyumsuz akışlar oluşturma ve kullanma.For more information about async streams, see Tutorial: Generate and consume async streams using C# 8.0 and .NET Core 3.0.

  • Sınıfınız yönetilmeyen kaynaklara sahip olduğunda ve serbest bırakıldığında, bir ara arabelleğin içeriğini bir dosyaya Temizleme veya bir bağlantıyı kapatmak için ağ üzerinden bir paket gönderme gibi kaynak yoğunluklu bir g/ç işlemi gerektirir.When your class owns unmanaged resources and releasing them requires a resource-intensive I/O operation, such as flushing the contents of an intermediate buffer into a file or sending a packet over a network to close a connection.

Yönetilmeyen kaynakları DisposeAsync boşaltma, serbest bırakma veya sıfırlama gibi yönetilmeyen kaynakları kullandıktan sonra her temizleme işlemini gerçekleştirmek için yöntemini kullanın.Use the DisposeAsync method to perform whatever cleanup is necessary after using the unmanaged resources, such as freeing, releasing, or resetting the unmanaged resources. Daha fazla bilgi için bkz. DisposeAsync yöntemi uygulama.For more information, see Implement a DisposeAsync method.

Yöntemler

DisposeAsync()

Yönetilmeyen kaynakları zaman uyumsuz olarak boşaltma, serbest bırakma veya sıfırlama ile ilişkili uygulama tanımlı görevleri gerçekleştirir.Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources asynchronously.

Uzantı Metotları

ConfigureAwait(IAsyncDisposable, Boolean)

Zaman uyumsuz bir atılabilir döndürülen görevlerin ne kadar beklediğini yapılandırır.Configures how awaits on the tasks returned from an async disposable are performed.

Şunlara uygulanır