मैं इंटरएक्टिव एक्सटेंशन के स्रोत कोड पढ़ रहा हूँ और एक line कि मैं नहीं समझ सकता पाया है:सी # कार्य - क्यों एक NOOP लाइन इस मामले में की जरूरत है
public static Task<bool> UsingEnumerator(this Task<bool> task, IDisposable disposable)
{
task.ContinueWith(t =>
{
if (t.IsFaulted)
{
var ignored = t.Exception; // don't remove!
}
if (t.IsFaulted || t.IsCanceled || !t.Result)
disposable.Dispose();
}, TaskContinuationOptions.ExecuteSynchronously);
return task;
}
मैं भी किसी भी प्रासंगिक टिप्पणी नहीं दिख रहा है IsFaulted
या Exception
गुणों के लिए दस्तावेज़।
इस संदर्भ में var ignored = t.Exception; // don't remove!
क्यों इस लाइन की आवश्यकता है?
एक संबंधित प्रश्न: मैंने सोचा कि ऐसी लाइनें रिलीज मोड में ऑप्टिमाइज़ की गई हैं, लेकिन यहां टिप्पणी और मंशा दिया गया है, यदि मामला नहीं है (यदि कोड सही है)। तो यह लाइन रिलीज मोड में क्यों रहती है?
.NET 4 में कार्य अंतिम रूपकर्ता एक अपवाद फेंकता है यदि कोई कार्य गलत है लेकिन इसकी 'अपवाद' संपत्ति का उपयोग नहीं किया गया है। – Lee
@ कृपया धन्यवाद! यह वास्तव में 'अपवाद' संपत्ति के दस्तावेज़ों में लिखा गया है लेकिन मुझे इसे पहले पढ़ने पर समझ में नहीं आया। –
रिलीज बिल्ड में हटाए जाने के संबंध में, 'अनदेखा' स्थानीय हटा दिया जाएगा, लेकिन 'टी अपवाद' को इसके मूल्य के लिए हल किया जाएगा (क्योंकि यह हो सकता है, और इस मामले में, साइड इफेक्ट्स का कारण बनता है) यह बस इतना है रिहाई में मंजिल पर रिटर्न वैल्यू गिरा दिया जाता है, जो एक अपठित चर में संग्रहीत करने के बजाय बनाता है। – Servy