C # 5 के बाद अतुल्यकालिक प्रोग्रामिंग के लिए मॉडल async
और await
मॉडल प्रस्तुत किया गया , C # समुदाय एक नामजद सम्मेलन में एक "Async" प्रत्यय जोड़ने के लिए एक आवेगपूर्ण प्रकार को लौटाने के तरीकों पर आया, जैसे:
interface Foo
{
Task BarAsync();
}
कई स्थिर कोड एनालाइज़र (रोसलिन-आधारित और गैर-रोसलिन-आधारित दोनों) तब से इस नामकरण सम्मेलन पर निर्भर करने के लिए लिखे गए हैं जब अतुल्यकालिक प्रोग्रामिंग के आसपास कोड गंध का पता लगाता है।
अब जब C # 8 ने अतुल्यकालिक एनुमेरबल्स की अवधारणा पेश की है, जो स्वयं प्रतीक्षा योग्य नहीं है, लेकिन इसके साथ संयोजन के रूप में उपयोग किया जा सकता है await foreach
, नाम वापसी के तरीकों के लिए दो विकल्प प्रतीत होते हैं IAsyncEnumerable
:
interface Foo
{
// No "Async" suffix, indicating that the return value is not awaitable.
IAsyncEnumerable<T> Bar<T>();
}
या
interface Foo
{
// With "Async" suffix, indicating that the overall logic is asynchronous.
IAsyncEnumerable<T> BarAsync<T>();
}
क्या उपरोक्त विकल्पों के संबंध में एक निश्चित नामकरण कन्वेंशन गाइडलाइन (C # भाषा टीम, .NET फाउंडेशन, या अन्य प्राधिकरणों से) है, जैसे कि C # 5 नामकरण कन्वेंशन को स्पष्ट रूप से मानकीकृत किया गया था और प्रोग्रामर के राय-आधारित निर्णय पर नहीं छोड़ा गया था?
Async
वापसी के तरीकों के लिए प्रत्यय का उपयोग करता है IAsyncEnumerable
, जैसे ChannelReader.ReadAllAsync । अन्य मामलों में, उदाहरण के लिए EF Core, AsAsyncEnumerable()
का उपयोग किया जाता है जो पहले से ही स्पष्ट है
async
एंड इनawait