This blog post नए कार्य एपीआई का उल्लेख करता है, जिसमें नई Task.CompletedTask .NET 4.6 में पेश की गई संपत्ति शामिल है।.NET 4.6 के कार्य का बिंदु क्या है। पूर्ण कार्य?
क्यों जोड़ा गया है? Task.FromResult(whatever)
से यह बेहतर कैसे है?
This blog post नए कार्य एपीआई का उल्लेख करता है, जिसमें नई Task.CompletedTask .NET 4.6 में पेश की गई संपत्ति शामिल है।.NET 4.6 के कार्य का बिंदु क्या है। पूर्ण कार्य?
क्यों जोड़ा गया है? Task.FromResult(whatever)
से यह बेहतर कैसे है?
Task.FromResult(whatever)
Task<TResult>
के लिए काम करता है, लेकिन 4.6 तक नॉनजेनेरिक कार्य के लिए कुछ भी नहीं था। आप एक डमी मूल्य के साथ FromResult
इस्तेमाल कर सकते हैं और परोक्ष Task
करने के लिए इसे डाली, लेकिन यह कुछ हद तक आशय obfuscates नीचे (आप वास्तव में किसी भी अतुल्यकालिक मूल्य नहीं लौटा रही हैं) और आवंटित वस्तुओं (CompletedTask
कैश्ड किया जा सकता है, जबकि और सभी कॉलर्स के बीच साझा) ।
वर्तमान (4.5.2 और पुराने) कोडबेस में कस्टम स्थिर पूर्ण कार्य देखने के लिए असामान्य नहीं है, इसलिए मेरी राय में यह ढांचे में स्वयं को शामिल करना समझ में आता है।
स्पष्ट इरादे काफी नहीं है? – svick
कारण यह है कि आप स्थाई अपरिवर्तनीय कार्यों को बनाकर स्मृति को छोड़ सकते हैं जो निश्चित राज्यों में हैं। यदि आपको एक पूरा कार्य वापस करने की आवश्यकता है क्योंकि उदा। आप केवल वैकल्पिक रूप से नेट से सामान डाउनलोड करते हैं और अन्यथा एक डमी कार्य लौटाते हैं जो पूरा करने के लिए सेट है ताकि आपके कार्य पर इंतजार करने वाले कॉलर तुरंत जारी रह सकें। अब तक आपको अपना खुद का उदाहरण बनाने और इसे कैश करने या इसे TaskCompletionSource के माध्यम से हर बार बनाने की आवश्यकता है। –
ब्लॉग पोस्ट पहले से ही बताता है कि क्यों 'Task.CompletedTask' जोड़ा गया है ... यह विशेष रूप से उल्लेख है" पुस्तकालय कोड है कि प्रदर्शन और परहेज आवंटन के बारे में परवाह करता है "। अब इसकी तुलना करें अपने 'कार्य। FromResult (जो कुछ भी)': क्या यह आवंटन से बचता है? नहीं, यह नहीं करता है। – hvd