2010-03-29 14 views
6

कहना देता है कि मैं निम्नलिखित कोड के साथ एक नई प्रक्रिया बनाने के लिए कोशिश कर रहा हूँ हो रही है:सी # में बनाई गई एक प्रक्रिया का एक पीआईडी ​​

System.Diagnostics.Process p = new System.Diagnostics.Process(); 
p.StartInfo.WorkingDirectory = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); 
p.StartInfo.FileName = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\AwesomeFile.exe"; 
p.StartInfo.Arguments = "parameter1 parameter2"; 
p.StartInfo.CreateNoWindow = true; 
p.Start(); 

और सही अगली पंक्ति में, मैं एक पाने के लिए कोशिश करता हूँ निम्न पंक्ति के साथ उस प्रक्रिया का पीआईडी:

MessageBox.Show(p.Id); 

यह पंक्ति मुझे दे रहा है "कोई प्रक्रिया इस वस्तु के साथ जुड़ा हुआ है।" त्रुटि। इस त्रुटि के कारण कोई विचार क्यों है?

उत्तर

3

यह सिस्टम करें। डायग्नोस्टिक्स.प्रोसेस.गेटप्रोसेसेसबिननाम ("प्रक्रिया नाम") [0] आईडी।

+0

आपकी प्रतिक्रिया के लिए धन्यवाद। क्या एक ही नाम की विभिन्न प्रक्रियाओं की पहचान करने का कोई तरीका है? आइए कहें कि मेरे पास दो इक्सप्लोर प्रक्रियाएं चल रही हैं, दोनों को प्रारंभ में विभिन्न यूआरएल के साथ पैरामीटर के रूप में निष्पादित किया गया था। मुझे कैसे पता चलेगा कि कौन सा सरणी में है? – screenshot345

+0

मैं इस आदेश को देखा: System.Diagnostics.Process.GetProcessesByName ("processname") [0] .StartInfo जो तर्क पैरामीटर, जो बहुत अच्छा होगा भी शामिल है, लेकिन यह एक फ़ाइल है कि नहीं था पर पता चला रिक्त सी # द्वारा निष्पादित इसे ठीक करने का कोई तरीका है? – screenshot345

10

Process.Start का वापसी मूल्य देखें। कुछ मामलों में, प्रक्रिया। स्टार्ट झूठी वापसी कर सकता है, इस मामले में कोई आईडी इसके साथ संबद्ध नहीं होगा।

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