जब मैं डीबग मोड में निम्न कोड चलाता हूं, तो यह सफलतापूर्वक समाप्त हो जाएगा और बाहर निकल जाएगा। हालांकि, अगर मैं निम्नलिखित कोड को मोड में चलाता हूं, तो यह एक अनंत लूप में फंस जाएगा और कभी खत्म नहीं होगा।रिलीज मोड में अनंत लूप
static void Main(string[] args)
{
bool stop = false;
new Thread(() =>
{
Thread.Sleep(1000);
stop = true;
Console.WriteLine("Set \"stop\" to true.");
}).Start();
Console.WriteLine("Entering loop.");
while (!stop)
{
}
Console.WriteLine("Done.");
}
कौन सा अनुकूलन इसे अनंत लूप में फंसने का कारण बन रहा है?
क्या थ्रेड के बीच 'स्टॉप' तक पहुंच को सिंक्रनाइज़ करने की आवश्यकता नहीं है? –
कुछ अनुकूलन सामग्री के कारण यह है। संकलन स्टॉप का एक सच्चा इंस्टाट तैयार करेगा। – rekire
नई रद्दीकरण टोकन कक्षाओं पर नज़र डालें। इस मुद्दे को हल करने के लिए उनका आविष्कार किया गया था। http://msdn.microsoft.com/en-us/library/dd997364.aspx –