क्लासिक सिंक का उपयोग करना
क्लासिक इंटरफ़ेस को Dispose()लागू करने वाली किसी वस्तु की विधि का उपयोग करता IDisposableहै।
using var disposable = new Disposable();
// Do Something...
के बराबर है
IDisposable disposable = new Disposable();
try
{
// Do Something...
}
finally
{
disposable.Dispose();
}
नई async का उपयोग करने का इंतजार है
नया कॉल का उपयोग करने का इंतजार करता है और इंटरफ़ेस को DisposeAsync()लागू करने वाली किसी वस्तु की विधि का इंतजार करता IAsyncDisposableहै।
await using var disposable = new AsyncDisposable();
// Do Something...
के बराबर है
IAsyncDisposable disposable = new AsyncDisposable();
try
{
// Do Something...
}
finally
{
await disposable.DisposeAsync();
}
IAsyncDisposable इंटरफ़ेस में जोड़ा गया .NET Core 3.0और .NET Standard 2.1।
.NET में, मानव रहित संसाधन रखने वाले वर्ग आमतौर पर अप्रबंधित संसाधनों को समकालिक रूप से जारी करने के लिए एक तंत्र प्रदान करने के लिए आईडीआईसोफ़ायर इंटरफ़ेस लागू करते हैं। हालांकि, कुछ मामलों में उन्हें सिंक्रोनस के अलावा (या इसके बजाय) अप्रबंधित संसाधनों को जारी करने के लिए एक अतुल्यकालिक तंत्र प्रदान करने की आवश्यकता होती है । ऐसे तंत्र को प्रदान करने से उपभोक्ता जीयूआई एप्लिकेशन के मुख्य धागे को लंबे समय तक अवरुद्ध किए बिना संसाधन-गहन निपटान संचालन करने में सक्षम होता है।
इस इंटरफ़ेस की IAsyncDisposable.DisposeAsync विधि एक ValueTask देता है जो एसिंक्रोनस डिस्पोज़ ऑपरेशन का प्रतिनिधित्व करता है। वे वर्ग जो स्वयं के अप्रबंधित संसाधन इस विधि को लागू करते हैं, और इन वर्गों के उपभोक्ता इस विधि को किसी वस्तु पर तब कॉल करते हैं जब इसकी आवश्यकता नहीं होती है।
await usingएक के साथ उपयोगIAsyncDisposableकर सकते हैं और आप केवलusingएक के साथ उपयोग कर सकते हैंIDisposableक्योंकि न तो दूसरे से विरासत में मिला है। आप या तो उपयोग कर सकते हैं केवल तभी जब ठोस वर्ग दोनों को लागू करता है और फिर यह निर्भर करता है कि आप अतुल्यकालिक कोड लिख रहे हैं या नहीं।