c# - I'm checking if my application is already running or not and it's saying running even if i stopped the application why? -
मैंने अंदर किए गए Program.cs:
सिस्टम का उपयोग कर; System.Collections.Generic का उपयोग कर; System.Linq का उपयोग कर; System.Windows.Forms का उपयोग कर; System.Diagnostics का उपयोग कर; DannyGeneral का उपयोग कर; नाम स्थान mws {स्थिर वर्ग कार्यक्रम {/// & lt; सारांश & gt; /// आवेदन के लिए मुख्य प्रवेश बिंदु /// & lt; / सारांश & gt; [STAThread] स्थिर शून्य मुख्य () {try (ifApplicationAlreadyRunning () == सत्य) {MessageBox.Show ("एप्लिकेशन पहले से ही चल रहा है"); } अन्य {आवेदन.सक्षमव्यूज़ुअल शैली (); Application.SetCompatibleTextRenderingDefault (गलत); आवेदन.रुन (नया फॉर्म 1 ()); }} पकड़ (अपवाद गलती) {लकड़हारा। लिखें ("त्रुटि" + err.ToString ()); }} स्टैटिक बूल isApplicationAlreadyRunning () {string proc = Process.GetCurrentProcess ()। प्रक्रिया का नाम; प्रोसेस [] प्रोसेस = प्रोसेस। गेटप्रक्रियासबायनाम (proc); यदि (processes.Length & gt; 1) {वापस सत्य; } अन्य {वापसी झूठी; }}}} मैंने एक ब्रेकपॉइंट का इस्तेमाल किया और यहां तक कि अगर मैंने इस दृश्य स्टूडियो में अपने प्रोग्राम को बंद कर दिया और मैं फिर से आवेदन को चलाने की कोशिश करता हूं तो यह सच हो और संदेश फेंक दें कि आवेदन पहले से ही रननग।
ब्रेकपॉइंट में मैंने देखा कि चर proc में शामिल हैं: मेरा मौसम स्टेशन। Vshost
और अब मैंने देखा कि यह तब होता है जब मैं अपने आवेदन की एक दूसरी प्रति खोलता हूं नया दृश्य स्टूडियो विंडो और दूसरे स्थान पर एक और हार्ड डिस्क पर आवेदन किया गया है और मैंने किसी भी स्टूडियो विंडो में आवेदन नहीं चलाया।
तो क्यों मेरे पास एक ही आवेदन क्यों दो बार खोला गया है दृश्य स्टूडियो और यह नहीं चल रहा है यह सोच रहा है कि यह चल रहा है? और यहां तक कि अगर मैं दूसरे दृश्य स्टूडियो को बंद करता हूं, तब भी मैं अपने मौसम स्टेशन proc.vshost में देखता हूं, लेकिन इस बार यह झूठी वापसी करता है।
संपादित करें
अब मैं देख रहा हूँ कि चर प्रक्रियाओं में दो बार सूचकांक 0 और 1 में मेरा मौसम स्टेशन। Vshost और अगर मैं दूसरे दृश्य स्टूडियो को बंद कर देता हूं, इसमें केवल एक होता है।
सवाल यह है कि यह मेरा मौसम स्टेशन क्या है। Vshost? और क्यों यह आवेदन चलाने के रूप में गिनती है यदि आवेदन नहीं चल रहा है? मैं यह कैसे बेहतर कर सकता हूँ ताकि अगर मैं अपने आवेदन की अधिक प्रतियां खोलूं तो यह नहीं लगता कि ऐप चल रहा है?
इसका कारण यह है कि मैं अपने आवेदन की दूसरी प्रति खोलना चाहता हूं यह है कि दूसरा बड़ा है और मैं कुछ पुराने चीजें जो मैंने किया था देखना चाहता था
मैं इसे बदल सकता हूँ:
यदि (processes.Length & gt; 1) और इसे & gt; 10 उदाहरण के लिए लेकिन फिर भी मुझे नहीं पता कि मेरा मौसम स्टेशन क्या है। Vshost? यह स्मृति में क्यों चल रहा है? और यह क्यों चल रहे अनुप्रयोग के रूप में विचार कर रहा है?
ऐसा लगता है कि आप "एकल उदाहरण अनुप्रयोग बनाने की कोशिश कर रहे हैं "। इस के लिए कई मौजूदा समाधान प्रकाशित किए गए हैं ऐसा करने का आम तौर पर स्वीकार किया गया तरीका है एक म्यूट एक्स का उपयोग करना और देखें कि यह पहले से ही आयोजित किया गया है, जैसे यहाँ:
इसके अतिरिक्त, ऐसा प्रतीत होता है कि यह पहले से ही विंडोज़ रूपों में निर्मित एक विशेषता है (जो आपके उदाहरण स्रोत फ़ाइल में संदर्भ, आप उपयोग करने लगते हैं)। को देखें
Comments
Post a Comment