2011-05-20 7 views
10

मुझे पता है कि जब मैं नया MessageQueue बनाने का प्रयास करता हूं, तो संदेश कतारबद्ध नहीं होने पर सिस्टम InvalidOperationException फेंकता है।प्रोग्रामिंग को कैसे पता चलेगा कि संदेश क्विकिंग मशीन पर सक्षम है या नहीं?

लेकिन प्रोग्रामेटिक रूप से को कैसे जानना है कि मशीन पर संदेश कतार सक्षम है या नहीं? मैं दो अलग-अलग कोड अड्डों में सी # 2.0 & सी # 4.0 का उपयोग कर रहा हूं।

+0

आप वास्तव में अपने प्रश्न का उत्तर, बस इस कोशिश { // बनाने या किसी MessageQueue खोलने} पकड़ (InvalidOperationException) { // सक्षम नहीं है } – Vimvq1987

+0

राज्य का पता लगाने के लिए अपवाद का उपयोग करने की कोशिश/जानकारी बिल्कुल खराब होने तक एक बुरा अभ्यास है। – Travis

उत्तर

17

आप इस एक के लिए System.ServiceProcess उपयोग कर सकते हैं, लेकिन पहले आप के लिए संदर्भ जोड़ने की जरूरत है अपने Service.ServiceProcess परियोजना है, और आप इस तरह सभी सेवाओं को पुनः प्राप्त करने और उनकी स्थिति प्राप्त कर सकते हैं:

List<ServiceController> services = ServiceController.GetServices().ToList(); 
ServiceController msQue = services.Find(o => o.ServiceName == "MSMQ"); 
if (msQue != null) { 
    if (msQue.Status == ServiceControllerStatus.Running) { 
     // It is running. 
    } 
} else { // Not installed? } 
+0

उत्कृष्ट! उत्तर के रूप में स्वीकार कर रहा है। एमएसएमक्यू सेवा के सटीक नाम को संशोधित किया गया है जब एमएसएमक्यू स्थापित होने पर ओएस चलता है। 'सेवा नाम' कम से कम विंडोज 7 और विंडोज एक्सपी पर 'एमएसएमक्यू' है। – Learner

+0

बढ़िया! एक अच्छा लें। –

-1

आपने अपने स्वयं के प्रश्न का उत्तर दिया है: एक नया MessageQueue बनाने का प्रयास करें, और अवैधऑपरेशन अपवाद पकड़ें।

यदि आपको कोई अपवाद नहीं मिलता है, तो एमक्यू सक्षम है; अगर आपको अपवाद मिलता है, तो यह सक्षम नहीं है। (आपको लगता है कि MessageQueue उदाहरण के, निपटान कर सकते हैं यदि एक बनाया गया था के रूप में आप केवल समर्थन का पता लगाने के लिए इसका इस्तेमाल किया है)

2

थोड़ा देर से उत्तर देना है, लेकिन आप प्रशंसक को स्क्रिप्ट रहे हैं Powershell आपकी मदद पर है। नंबर पर स्थिति अद्यतन प्राप्त करने के लिए, निम्न स्क्रिप्ट उपयोग:

$queues = Get-WmiObject Win32_PerfFormattedData_msmq_MSMQQueue 
$queues | ft -property Name,MessagesInQueue 

यह कतार और प्रत्येक कतार में आइटम की संख्या की आप नाम दिखाई देगा। उम्मीद है कि यह किसी दिन किसी की मदद करेगा। : डी

+0

उत्तर के लिए धन्यवाद .. लेकिन यदि आप टैग देखते हैं तो सवाल सी # के लिए स्पष्ट रूप से था .. :) – Learner

+0

ओह! ध्यान नहीं दिया, लेकिन अब एक दिन पावरहेल इतनी बारीकी से .net ढांचे में बुना हुआ है कि इसे मूल रूप से बुलाया जा सकता है। #बस केह रहा हू –

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

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