2009-09-01 11 views
5

मेरे पास सी # में एक विंडोज़ फॉर्म ऐप है और यह पता लगाने की कोशिश कर रहा हूं कि मैं मुख्य() में लूप को प्राथमिक के बराबर सीएलआई ऐप को कार्यान्वित करता हूं। मैं विजुअल सी # के गुई डिजाइनर का उपयोग कर रहा हूं।विंडोज जीयूआई मुख्य लूप इन सी # ... यह कहां है?

संपादित करें: समस्या टाइमर के उदाहरण के साथ हल हो गई।

+3

मुझे संदेह है कि आप गलत स्तर पर इस बारे में सोच रहे हैं। आप यह भी पूछ सकते हैं कि "मेरे सी # प्रोग्राम में" कुछ बहुभुज के लिए डेटा कुछ बस पर GPU में स्थानांतरित हो गया है। उन विचारों को सी # भाषा में अवधारणाएं नहीं हैं, वे कार्यान्वयन विवरण हैं जो पुस्तकालय, भाषाएं और रनटाइम सार आपके लिए दूर हैं। सी # में विंडोज़ फॉर्म का पूरा बिंदु यह सुनिश्चित करना है कि आपको संदेश लूप के बारे में कभी भी सोचना न पड़े। हां, घटनाक्रम संचालित कार्यक्रम विंडोज संदेशों से बाहर बनाए गए हैं; कभी-कभी अमूर्त रिसाव, लेकिन आपको सामान्य मामलों में सीधे संदेश स्तर पर बात करने की आवश्यकता नहीं है। –

+0

@ ओआरएम: आपके द्वारा लिंक किया गया उदाहरण बहुत खराब लिखित कोड है। यदि आप इसका उपयोग करते हैं, तो मैं अनुशंसा करता हूं कि आप इसका उपयोग किस संदर्भ से बचें इसके संदर्भ में करें। –

+0

मैं हूं, और हाँ यह करने के लिए यह एक बकवास तरीका है। मैंने कोशिश की, और यह बिल्कुल ठीक काम नहीं किया। – Orm

उत्तर

13

यह Application.Run विधि के अंदर है। आप नहीं बुलाना चाहिए GetMessage एपीआई सीधे समारोह:

// MyForm is derived from `System.Windows.Forms.Form` class 
Application.Run(new MyForm()); 
+0

यह सुनिश्चित नहीं है कि GetMessage API जानकारी कहां आती है, हालांकि ... –

+0

भेड़ का बच्चा: आपका क्या मतलब है? आवेदन। रून एक संदेश पाश स्थापित करता है। आंतरिक रूप से, यह लूप में 'GetMessage' Win32 API फ़ंक्शन को कॉल करता है। –

+0

लेकिन फिर मैं अपने प्रोग्राम तर्क कैसे जोड़ूं। उदाहरण के लिए, अगर मैं चाहता हूं कि कार्यक्रम लगातार प्रिंट करे "यह काम करता है!" एक विजेट में (पाठ को मैंने पाया है, विजेट। टेक्स्ट + = "यह काम करता है!";)। – Orm

4

यह Application.Run(Form) से प्रवेश किया है। आप उस लूप में कोई तर्क नहीं डालते हैं। यदि आपको इनपुट का जवाब देने की आवश्यकता है, तो ईवेंट के हैंडलर को विशेष रूप से अपने फॉर्म पर नियंत्रण में जोड़ें। यदि आपको समय-समय पर तर्क चलाने की आवश्यकता है, तो Timer कक्षाओं में से एक का उपयोग करें।

सी ++ में संदेश पंप में तर्क का प्राथमिक परिणाम लैपटॉप पर बैटरी का अतिरिक्त/अनावश्यक उपयोग है। आपको निश्चित रूप से अपने लक्षित लक्ष्य को पूरा करने के लिए वास्तविक कोड आवश्यकताओं पर पुनर्विचार करना शुरू करना चाहिए, और उन्हें स्पिन लूप में लगातार चल रहे तर्क को शामिल नहीं करना चाहिए।

+0

ठीक है, यह मुझे थोड़ा सा मदद करता है, लेकिन अब मुझे यह जानने की जरूरत है कि मेरे प्रोग्राम को उस लूप में तर्क कैसे जोड़ना है। यही वह है जिसे मैं समझने की कोशिश कर रहा हूं। – Orm

+0

आप नहीं करते हैं। आप ईवेंट प्रोग्रामर में अपने प्रोग्राम का तर्क जोड़ते हैं। – Eclipse

0

this पढ़ने का प्रयास करें। भाषा बहुत स्पष्ट नहीं है, और कोड वीबी है लेकिन इसे बिंदु को प्राप्त करना चाहिए।

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