public void MyTest()
{
bool eventFinished = false;
myEventRaiser.OnEvent += delegate { doStuff(); eventFinished = true; };
myEventRaiser.RaiseEventInSeperateThread()
while(!eventFinished) Thread.Sleep(1);
Assert.That(stuff);
}
क्यों अस्थिर हो eventFinished नहीं कर सकते हैं और यह फर्क पड़ता है?क्यों एक स्थानीय चर सी # में अस्थिर नहीं किया जा सकता?
यह मेरे लिए प्रतीत होता है कि इस मामले में संकलक या क्रम अपने अच्छे के लिए स्मार्ट करने के लिए हो सकता है और जब तक पाश कि eventFinished केवल झूठे हो सकता है में 'पता' कहते हैं। खासकर जब आप जिस तरह से विचार करना एक को उठा लिया चर एक वर्ग के एक सदस्य और कहा कि एक ही कक्षा के एक तरीके के रूप में प्रतिनिधि और तथ्य यह है कि एक बार eventFinished एक स्थानीय चर था की जिससे वंचित अनुकूलन के रूप में उत्पन्न हो जाता है।
आपका चर इस मामले में स्थानीय नहीं है! इसके बजाय, यह एक कंपाइलर से उत्पन्न कक्षा में एक आवृत्ति चर है। –
यह एक अर्थपूर्ण अंतर है - कोड के संदर्भ में, यह एक स्थानीय चर है जो कब्जा करने के लिए होता है ... –
जो मैं देखता हूं वह एक स्थानीय चर है जिसे एक अलग थ्रेड में अद्यतन किया जाता है। और भले ही मुझे पता है कि कंपाइलर मेरे स्थानीय चर का एक आवृत्ति चर बना देगा, प्री-कंपाइलर स्पष्ट रूप से इसे स्वीकार करने के लिए 'बहुत जिद्दी' नहीं है या नहीं। –