निम्नलिखित कोड का उपयोग कर एक नया कंसोल अनुप्रयोग शुरू -Console.In.ReadLineAsync ब्लॉक क्यों करता है?
class Program
{
static void Main(string[] args)
{
while (true)
{
Task<string> readLineTask = Console.In.ReadLineAsync();
Debug.WriteLine("hi");
}
}
}
Console.In.ReadLineAsync ब्लॉक कर रहा है और वापस नहीं करता है जब तक एक लाइन कंसोल में दर्ज किया गया है .. तो "हाय" कभी नहीं करने के लिए लिखा जाता है कंसोल।
Console.In.ReadLineAsync पर प्रतीक्षा का उपयोग भी ब्लॉक करता है।
यह मेरी समझ थी कि नई Async सीटीपी विधियों को अवरुद्ध नहीं करते हैं।
इसका कारण क्या है?
यहाँ एक और उदाहरण
static void Main(string[] args)
{
Task delayTask = Task.Delay(50000);
Debug.WriteLine("hi");
}
है यह बर्ताव करता है के रूप में मैं उम्मीद है, यह सीधे अगली पंक्ति और प्रिंट "हाय" के बाद से Task.Delay ब्लॉक नहीं करता चला जाता है।
बग यहाँ https://connect.microsoft.com/VisualStudio/feedback/details/779079/console-readlineasync-is-actually-blocking-when-it-should-be-returning-a-task रिपोर्ट किया गया है -हाथोंहाथ – NoPyGod