2011-09-16 16 views
19

अधिकतर जिज्ञासा से, मैंने विजुअल स्टूडियो 2011 में एक छोटी "मेट्रो स्टाइल" परियोजना प्रोग्रामिंग शुरू की, जिसे विंडोज डेवलपर पूर्वावलोकन में रिलीज़ किया गया था। यह कोड-पीछे के लिए डिजाइन और सी # (मेरे प्रोजेक्ट में) के लिए एक्सएएमएल को जोड़ती है।गायब .NET विशेषताएं?

सी # अनुभव अधिकतर एक आप .NET फ़्रेमवर्क 4.0 के साथ विजुअल स्टूडियो 2008 पर प्राप्त करने के लिए समान है इन सुविधाओं है कि मैं खोजने के लिए सक्षम नहीं था के लिए बचाने के लिए,:,

  • System.Console जो डिबगिंग को थोड़ा और कठिन बना देता है,
  • और सिस्टम। थ्रेडिंग। थ्रेड। स्लीप (टाइमस्पेन), जो कि थोड़ा सा असुविधाजनक है क्योंकि मुझे अभी वही चाहिए जो ठीक है।

तो क्या ये सुविधाएं वास्तव में गायब/अक्षम हैं, या क्या मैंने गलत जगह पर देखा है? अग्रिम में धन्यवाद।

उत्तर

17

मेरे पास पूर्वावलोकन स्थापित नहीं है, इसलिए मैं जांच नहीं कर सकता। लेकिन यहां दो विचार हैं:

  1. सिस्टम। कंसोल शायद उपलब्ध नहीं है, क्योंकि मेट्रो शैली अनुप्रयोगों में कोई कंसोल नहीं है। जांचें कि Debug.WriteLine उपलब्ध है या नहीं। यह सीधे विजुअल स्टूडियो में डीबग विंडो को लिखता है।

  2. मेट्रो शैली अनुप्रयोगों को विस्तारित अवधि के लिए धागे को अवरुद्ध नहीं करना चाहिए। कुछ मिलीसेकंड से अधिक ले जाने वाली हर चीज को असीमित तरीके से किया जाना चाहिए। कुछ समय के बाद एसिंक्रोनस कॉलबैक निष्पादित करने के लिए देखें, उदाहरण के लिए, टाइमर। या आप await एक समय अवधि के अंत में सक्षम हो सकते हैं (जैसे Async CTP में TaskEx.Delay)।

+7

'टास्कएक्स' में सभी सामान अब 'कार्य' के लिए उचित स्थानांतरित हो गए हैं, इसलिए कार्य का इंतजार करें। डेले (एमएस) 'को चाल चलनी चाहिए। –

7

"printf डीबगिंग" के लिए, मेरा सुझाव है कि आप Debug.WriteLine और/या Trace.WriteLineSystem.Diagnostics नामस्थान से विधियों का उपयोग करें। वे डीबगर आउटपुट विंडो पर प्रिंट करते हैं - डेवलपर पूर्वावलोकन में आने वाले वीएस एक्सप्रेस में, आपको उस पहले (डीबग -> विंडोज़ -> आउटपुट) को सक्षम करने की आवश्यकता होगी।

Thread.Sleep के लिए, क्या आप उस विशिष्ट परिदृश्य को स्पष्ट कर सकते हैं जिसके लिए आपको विश्वास होना चाहिए?

+1

धन्यवाद, डीबग। लेखक काम किया। थ्रेड के लिए। सो जाओ, मुझे इसे एक लूप को जल्दी से प्रोटोटाइप करने की आवश्यकता थी, लेकिन टास्क। ऊपर दिए गए उत्तर से प्रस्तावित डेले ने अच्छी तरह से अंतर को भर दिया। – Timst

+0

ग्रेट सॉल्यूशन - यह सिस्टम में डब्ल्यूपीएफ में Trace.WriteLine() के बराबर है। डायग्नोस्टिक्स नेमस्पेस। – nocarrier

6

http://dougseven.com/2011/09/15/a-bad-picture-is-worth-a-thousand-long-discussions/

मेरे समझ है कि यह केवल एक सबसेट है; जो कुछ गुम है, वह सिंक्रोनस ऑपरेशंस से संबंधित है (इसलिए मुझे आश्चर्य नहीं है कि थ्रेड। सो जाओ() चला गया है)। आपको 'File.Create' जैसी चीज़ें भी मिलेंगी जिन्हें समकालिक रूप से नहीं कहा जा सकता है।

5

कोई Thread.Sleep() नहीं है, लेकिन आप Task.Delay(milliseconds);

सोच क्या यह उपयोगी के लिए है उन लोगों के लिए उपयोग कर सकते हैं, मैं कहता हूँ मैं डिबग में उपयोग async व्यवहार पर जोर देना।

संबंधित मुद्दे