मेरे आवेदन को ठंडा करने के बाद मैंने Task.Delay()
(या TaskEx.Delay()
द्वारा .NET 4.0 में बनाए गए कार्य पर प्रतीक्षा किए गए थ्रेड के कारण को ट्रैक किया) जिसके लिए यह एक बग के कारण TimeSpan
की गणना की गई, जिसे TimeSpan
पर गणना की गई थी TotalMilliseconds
-1
से कम या उसके बराबर और -2
से अधिक (यानी -10000 से -19 999 टिकों के बीच कहीं भी) शामिल है।कार्य क्यों करता है। डेले() एक अनंत देरी की अनुमति देता है?
ऐसा लगता है कि जब आप एक नकारात्मक TimeSpan
-2
मिलीसेकंड या कम है कि गुजरती हैं, विधि सही ढंग से एक ArgumentOutOfRangeException
फेंकता है, लेकिन जब आप रेंज ऊपर वर्णित से एक नकारात्मक TimeSpan प्रदान करते हैं यह एक Task
कि कभी नहीं पूरा करती रिटर्न (स्थापना करके अंतर्निहित System.Threading.Timer
एक dueTime
-1 -1 जो अनंतता को दर्शाता है)। इसका मतलब है कि उस कार्य पर सेट की गई कोई भी निरंतरता कभी निष्पादित नहीं होगी, और .Wait()
पर होने वाले किसी भी खराब धागे को Task
पर हमेशा अवरुद्ध कर दिया जाएगा।
Task
क्या संभव उपयोग संभव नहीं है? क्या कोई इस तरह के वापसी मूल्य की उम्मीद करेगा? .Delay()
पर कोई नकारात्मक मूल्य पारित नहीं होना चाहिए, जिसमें उस विशेष सीमा में मूल्य शामिल हैं, ArgumentOutOfRangeException
फेंक दें?
एमएसडीएन दस्तावेज़ -1 की अनुमति देने में काफी स्पष्ट है, इसलिए ऐसा लगता है कि यह सही ढंग से व्यवहार कर रहा है। उस अधिभार के उपयोग के मामले के बारे में निश्चित नहीं है, लेकिन यह अधिभार टोकन लेने वाले अधिभार के साथ 'बस' रद्दीकरण की प्रतीक्षा करने का एक तरीका हो सकता है। –
@ जेम्स: यह -1 को अनुमति देने में स्पष्ट नहीं है, यह -1 से कम मानों को अस्वीकार करने में स्पष्ट है। यह भी नहीं कहता है कि यदि आप -1 सिस्टम पास करते हैं, तो 'सिस्टम। थ्रेडिंग टिमर' के दस्तावेज़ के विपरीत क्या होगा। यह लगभग प्रकट होता है जैसे अपवाद की दस्तावेजी सूची स्वचालित रूप से स्रोत कोड से उत्पन्न होती है। और यदि आप 'बस' रद्दीकरण की प्रतीक्षा कर रहे हैं, तो 'टास्क.डेले() 'पर कॉल क्यों करें? –
यदि आपको लगता है कि यह टूट गया है, तो कनेक्ट पर एक बग दर्ज करें। एक डॉक्टर जो कहता है "-1 से कम अमान्य है" स्पष्ट है (मेरे लिए) यह कहकर कि -1 मान्य है। यदि इरादा -1 के रूप में अमान्य था "0 से कम अमान्य है" लिखना आसान होता। चूंकि दस्तावेज़ और कोड दोनों अनुमति देते हैं -1, मुझे लगता है कि यह डिज़ाइन द्वारा है, लेकिन कनेक्ट पर एक बग फ़ाइल करने के लिए स्वतंत्र महसूस करें (बीसीएल टीम द्वारा यादृच्छिक एसओ थ्रेड की तुलना में संसाधित होने की अधिक संभावना है, मुझे लगता है :) –