2009-05-27 3 views
15

मैं एक (सी #) प्रोग्राम बना रहा हूं जो एनजेडबी फाइलों का उपयोग कर द्विआधारी डाउनलोड करता है, मेरे आवेदन का केवल एक उदाहरण किसी भी समय चल रहा है।सी #: कैसे - एकल उदाहरण अनुप्रयोग जो नए मानकों को स्वीकार करता है?

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

मेरे ऐप एकल-उदाहरण को विज़ुअल बेसिक डीएलएल का उपयोग करके ISSingleInstance चाल के साथ किया जा सकता है, लेकिन मैं वहां नहीं जाना चाहता।

मेरा ऐप एकल-उदाहरण, सुनिश्चित करने के लिए एक म्यूटेक्स का उपयोग करने का सही तरीका लगता है लेकिन अब मैं पहले से चल रहे उदाहरण में निर्दिष्ट पैरामीटर (.nzb फ़ाइल) को पास करने के तरीके पर फंस गया हूं।

सहायता की सराहना की जाएगी! :-)

+0

आप शायद इसके बारे में जानते हैं, लेकिन आप अपने आवेदन के साथ पहिया को फिर से शुरू कर सकते हैं। http://sourceforge.net/projects/sabnzbd/ लेकिन एक उदाहरण – dss539

+1

यूप है, और अनगिनत अन्य हैं ;-) यह एक शौक-परियोजना है जो सिर्फ मेरी उंगलियों को सी # के साथ फ्लेक्स करने के लिए है, और यदि मुझे परिणाम पसंद है तो दुनिया एनजेबीबी-डाउनलोडर सिर्फ एक और फ्रीवेयर के साथ खत्म! :-) – Led

+2

आप माइक्रोसॉफ्ट से सिंगल इंस्टेंस कंट्रोलर का उपयोग क्यों नहीं करना चाहते हैं। VisualBasic.dll? यह किसी और की तरह ढांचे के भीतर एक असेंबली है। सिर्फ इसलिए कि नाम VisualBasic है इसका उपयोग नहीं किया जाएगा। यदि माइक्रोसॉफ्ट ने इसे माइक्रोसॉफ्ट कहा था। Foo.dll हर कोई इसका इस्तेमाल करेगा! – Oliver

उत्तर

2

इसे आज़माएं: आपका मुख्य कार्यक्रम एक नामित पाइप या अन्य इंटरप्रोसेस संचार सुविधा बनाता है और उस पर सुनता है। आप एक अलग छोटा प्रोग्राम बनाते हैं, जब एक पैरामीटर के रूप में एक NZB फ़ाइल के साथ चलाते हैं, पाइप खोलता है, इसमें फ़ाइल जानकारी खिलाता है, और बाहर निकलता है। आपका मुख्य कार्यक्रम तब नई फ़ाइल को संसाधित करता है और इसे डाउनलोड करता है।

0

क्यों एक प्रोग्राम नहीं है जो फ़ाइल को कतार में जोड़ता है, और उसके बाद डाउनलोडिंग प्रोग्राम को बंद कर देता है यदि यह पहले से नहीं चल रहा है। वह डाउनलोड प्रोग्राम कतार को देखता है, जो सिर्फ एक फ़ाइल है जिसे आप डाउनलोड फ़ाइल नाम जोड़ते हैं।

0

उपयोग एक भारतीय दंड संहिता (इंटर प्रक्रिया संचार) तंत्र इस तरह के .net remoting

0

के रूप में "अच्छा कार्यान्वयन" का उपयोग करना, मैं एक writer.Flush जोड़ने के लिए किया था() के बाद कम से InitialInstanceActivator पर देखो इसे लिखने के लिए WriteLine()। मैंने इसे खोजने के लिए थोडा समय बर्बाद कर दिया ...

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