2013-02-27 235 views
7

मेरे पास एक .NET 4.5 proj है जो async/await कार्यक्षमता का उपयोग कर रहा है।.NET Async/प्रतीक्षा कार्यों को डिबग करते समय चर का निरीक्षण नहीं कर सकते

जब मैं निरीक्षण करने के लिए कोशिश/एक इंतजार बयान के बाद एक चर संदर्भ quickwatch, मैं निम्नलिखित हो:

The name 'id' does not exist in the current context

इस तो मैं यह डीबग कर सकते हैं ठीक करने के लिए कैसे पता है?

Edit-- यहाँ कोड है कि चर अभी तक अस्तित्व में नहीं है

[Fact] 
    public async Task works_as_expected() 
    { 
     var repo = Config.Ioc.GetInstance<IAsyncRepository<Customer>>(); 

     var work = Config.Ioc.GetInstance<IUnitOfWork>(); 
     Customer c= new Customer() 
     { 
      FirstName = "__Micah", 
      LastName = "__Smith_test", 
      DateCreated = DateTime.Now, 
      DateModified = DateTime.Now, 
      Email = "[email protected]", 
      Phone = "7245551212" 
     }; 

     var id=await repo.Insert(c); 
     // i can't inspect the value of id 
     Assert.True(id > 0); 
    } 
+0

आप आईडी का निरीक्षण करने की कोशिश कर रहे हैं? क्या यह वास्तव में 'var id ...' लाइन के बाद है? –

+0

वास्तव में यह है - यह ऐसा कुछ है जो हर जगह मेरे कोड में होता है, यह एक बहुत ही सरल कोड संस्करण है जहां यह भी होता है। मुझे उम्मीद है कि सूक्ष्म में ऐसा क्यों होता है इसके बारे में स्पष्टीकरण प्राप्त करना मुझे यह भी बताएगा कि यह मैक्रो – Micah

+0

में क्यों होता है यह मेरे लिए काम करता है। मैंने एक सुपर डंबेड डाउन कार्यान्वयन बनाया। 'var id = कार्य का इंतजार करें। फैक्टरी। स्टार्टन्यू (() => {सिस्टम। थ्रेडिंग। पढ़ना। सो जाओ (1000); वापसी 1;}); वापसी आईडी;' –

उत्तर

-2

, इसलिए यह मूल्य है निरीक्षण करने के लिए कोई रास्ता नहीं है। इसका कोई मूल्य नहीं है (अभी तक)।

यह तब तक परिभाषित नहीं किया जाएगा जब तक कि आप इसे परिभाषित करने वाले कोड की रेखा तक नहीं पहुंच जाते, और जब तक आप इसे प्रारंभ नहीं करेंगे तब तक इसका कोई मूल्य नहीं होगा। जबकि आप कुछ मामलों में कभी भी असाइन किए जाने से पहले एक चर के मान का तकनीकी रूप से निरीक्षण कर सकते हैं, उस मूल्य को कभी भी कोड (असुरक्षित कोड के बाहर) में एक्सेस नहीं किया जा सकता है, इसलिए इसे देखने का कोई कारण नहीं है।

जब उस स्थान की स्मृति आवंटित की जाएगी (जो तब होता है जब आपके पास पहली बार डीबगर में इसे देखने का विकल्प होता है) जो चर के पहले await के बाद पहली पंक्ति तक पहुंचने के बाद होगा उपयोग किया गया।