2012-10-19 11 views
13

मेरे पास .NET विंडोज़ फॉर्म एप्लिकेशन है जहां मेन_लोड ईवेंट में बहुत से चर प्रारंभ किए गए हैं और मेरे पास एक ऐसी स्थिति है जहां मैं अपने डीबी को फिर से पूछताछ करना चाहता हूं और सभी वर्रों को शून्य और फिर से शुरू करने के लिए सेट किया गया है (मूल रूप से फॉर्म शुरुआत से 100% पुनः लोड किया गया), लेकिन मैंने अपना मुख्य लोड इस तरह से लिखा (मेरी गलती) कि यह करना आसान नहीं है ...आवेदन है। खराब करें?

मुझे पता है कि मुझे ठीक मिल सकता है जो मैं बस चाहता हूं Application.Restart पर कॉल करना और यह चाल सुंदर है, लेकिन मुझे यकीन नहीं है कि यह अच्छा प्रोग्रामिंग अभ्यास है या वास्तव में बुरा माना जाता है।

क्या कोई समस्या है जो मुझे इस संदर्भ में Application.Restart का उपयोग करके चलाने की संभावना है?

+5

मुझे लगता है कि आपके सहयोगियों को आपका कोड देखने और डब्ल्यूटीएफ कहने पर सबसे बड़ी समस्या हो सकती है ?! – Fernando

+0

... बहुत देर हो चुकी है, फर्नांडो ... वे पहले से ही कहते हैं कि हर समय: पी –

+1

क्या आप केवल मुख्य_लोड में एक अलग फ़ंक्शन में कोड को सार नहीं कर सकते हैं और जब भी आपको इसकी आवश्यकता हो, तो कॉल करें? तब आपको किसी भी दुष्प्रभाव के बारे में चिंता करने की ज़रूरत नहीं है जो आपके कार्य का हिस्सा नहीं है। –

उत्तर

7

डिबग करने के लिए अनुकूल नहीं के साथ काम कर सकते हैं का पालन करें, लेकिन वहाँ वास्तव में इसके साथ कुछ भी गलत नहीं है। यह ऐप को समाप्त करने और इसे फिर से शुरू करने जैसा सटीक है।

आप अपने मुख्य रूप का एक नया उदाहरण बनाकर और पुराने को बंद करके इसे टाल सकते हैं। हालांकि, कार्यक्रम को बाहर निकलने से रोकने के लिए आपको इसकी आवश्यकता होती है। कोड is here

+0

अपने कोड का उपयोग कर, क्या कोई प्रतिकूल दुष्प्रभाव हैं ?? –

+3

वारंटी वह है जो आपने इसके लिए भुगतान की है। –

+0

@ हंसपैसेंट तो दूसरे शब्दों में: "मुझे नहीं पता"? ;-) –

2

ऐसा नहीं है कि विधि काम नहीं करती है; बल्कि, कई बार प्रोग्रामर भूल जाते हैं कि उन्होंने अपने कोड में कुछ डाल दिया है जो एप्लिकेशन को स्वचालित रूप से बंद करने या शुरू करने से रोक देगा।

कृपया इस Thread

तुम भी

System.Diagnostics.Process.Start(Application.ExecutablePath); 
Application.Exit(); 
+0

...वह हिस्सा जो मुझे दोनों तरीकों से डराता है वह यह है कि मैंने अपने मुख्य। लोड ईवेंट में ब्रेकपॉइंट लगाया और यह दूसरी बार आग नहीं लगाता ... मुझे लगता है कि यह डीबगर के साथ एक मुद्दा है, लेकिन यह निश्चित रूप से है मुझे इस दृष्टिकोण से सावधान करता है ... क्या यह बुरा है ?? –

+0

यह बुरा नहीं है क्योंकि थ्रेड में भी चर्चा की गई है। यह सिर्फ इतना है कि यह विश्वसनीय नहीं है –

0

शीर्षक में सीधे प्रश्न का उत्तर देने के लिए, हाँ वैरिएबल को फिर से शुरू करने के लिए किसी एप्लिकेशन को पुनरारंभ करना खराब अभ्यास है।

ऐसे मामले हैं जहां एक एप्लिकेशन को पुनरारंभ करना उपयोगी है (उदाहरण के लिए स्वयं अपडेट), लेकिन ReInitialize() विधि की नकल करने के लिए पुनरारंभ करना मेरी राय में खराब है।

+0

... यदि मैं आपको सही तरीके से समझ रहा हूं तो मैं मूल रूप से स्व-अद्यतन कर रहा हूं ... मेरी चुनौती यह है कि मेरे पास मेरे मुख्य रूप में दर्जनों सूची वस्तुएं हैं जहां मैंने उन्हें Dim xyz के रूप में नई सूची (एबीसी) के रूप में मंद किया है। फिर, मेरे main_load ईवेंट और पूरे कार्यक्रम में मैं डीबी डेटा के साथ सूचियों में जोड़ रहा हूं और अब मुझे उन्हें पॉप्युलेट करने के लिए एक नई क्वेरी की आवश्यकता होगी ... मुझे डर है कि अगर मैं कोशिश करता हूं तो मुझे याद आएगा और उन्हें खाली करो ... –

0

मुझे इसके साथ समस्याएं थीं।

जब कोई उपयोगकर्ता लॉग इन करता है, तो मुझे वास्तव में एक बड़े Winforms एप्लिकेशन को पुनरारंभ करने की आवश्यकता होती है, यह सुनिश्चित करने के लिए कि सभी कैश किए गए (मेरा) डेटा शुद्ध हो जाएं।

आवेदन शटडाउन घटना में Application.restart() जोड़कर मेरी समस्या हल।

यह वी.एस. पर्यावरण के अंदर काम करता है और जब EXE चल

आपको लगता है कि घटना अपने मुख्य परियोजना गुण का चयन करें और अनुप्रयोग से (साइड टैब) तल पर देखें का चयन करें आवेदन घटनाक्रम पता लगाना चाहते हैं।

मेरा अनुमान है कि यह काम करता है क्योंकि यह बंद प्रक्रिया में बहुत देर हो चुकी है। उम्मीद है कि यह किसी की मदद करता है और, सबसे महत्वपूर्ण बात यह है कि यह काम जारी रखता है।

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