डब्लूएमआई कभी-कभी स्थानीय मशीन पर अनिश्चित अवधि लेता है

मैं कुछ अनुप्रयोगों में कुछ स्थानों में डब्लूएमआई का उपयोग करता हूं लेकिन कभी-कभी एप्लिकेशन डब्लूएमआई प्राप्त करने के तरीके पर फंस जाता है। जब ऐसा होता है तो कुछ भी मशीन को पुनरारंभ करने के अलावा इसे पुनर्प्राप्त करने में सक्षम नहीं लगता है। टास्क मैनेजर में डिबगिंग/एंडिंग प्रक्रिया को रोकना और फिर एप्लिकेशन को पुनरारंभ करना इसे उसी बिंदु पर लटकने का कारण बनता है। एक बार डब्लूएमआई ने लटकना शुरू कर दिया है, कोई भी आवेदन प्राप्त करने में सक्षम नहीं है। डब्लूएमआई को पुनर्प्राप्त करने की प्रतीक्षा में अनिश्चित अवधि लगती है और मशीन को पुनरारंभ होने तक किसी भी निम्न सुधार में कभी नहीं लगता है।

मेरे कुछ कोड निष्कर्ष निकाले गए हैं:

GetInstances() वह जगह है जहां यह कोड लटकता है।

public static ChassisTypes GetCurrentChassisType()
{
    ManagementClass systemEnclosures = new ManagementClass("Win32_SystemEnclosure");
    ManagementObjectCollection results = systemEnclosures.GetInstances();
    foreach (ManagementObject obj in results)
    {
        foreach (int i in (UInt16[])(obj["ChassisTypes"]))
        {
            if (i > 0 && i < 25)
            {
                return (ChassisTypes)i;
            }
        }
    }
    return ChassisTypes.Unknown;
}

प्राप्त करें() वह कोड है जहां यह कोड लटकता है।

public static string GetOSInfo()
{
    System.Management.ManagementObjectSearcher objMOS = new ManagementObjectSearcher("SELECT * FROM  Win32_OperatingSystem");
    try
    {
        foreach (ManagementObject objManagement in objMOS.Get())
        {
           //Do stuff to build OS version string
        }
    }
    catch (Exception)
    {
    }
    return OSName;
}

मैं कॉल को लटकने और बाकी डब्लूएमआई को जमा करने से कैसे रोकूं?

0
क्या आप Powerhell कमांड लाइन से एक ही क्वेरी को फायर करते समय भी लटकते हैं?
जोड़ा लेखक Saif Asif, स्रोत
हमारे पास यह जांचने का एक तरीका हो सकता है, क्या आप अपने डब्लूएमआई कॉल को एक अलग थ्रेड में आग लगा सकते हैं जिसे TimeOut होता है? चूंकि डब्लूएमआई कॉल कभी-कभी फांसी की जाती है अगर सही मूल्यों के साथ प्रदान नहीं की जाती है, लेकिन मैं इसके बारे में अधिक चिंतित हूं कि हम यह निर्धारित करते हैं कि वे वास्तव में लंबे समय तक ले रहे हैं, या कुछ और गलत है।
जोड़ा लेखक Saif Asif, स्रोत
यह एक दिलचस्प विकास के लिए बनाता है; मैं किसी भी अन्य ऑब्जेक्ट को बिना किसी समस्या के पावरहेल से कॉल कर सकता हूं लेकिन अगर मैं इसे अपने ऐप के रूप में कॉल करता हूं ( Get-WmiObject -Class "Win32_OperatingSystem" ) पावरहेल एक मान वापस नहीं करता है और मेरा ऐप फांसी बंद हो जाता है और इस बिंदु को पास करता है। मेरे ऐप से एक और कॉल (चाहे वह कक्षा या नहीं) पावरहेल के लिए एक मूल्य लौटाती है लेकिन ऐप फिर से लटकता है। और इसलिए चक्र जारी रहता है। अगर मैं अपने ऐप के दो उदाहरण चलाता हूं, हालांकि उनमें से दोनों एक के बजाय लटकते हैं दूसरे को जारी रखना।
जोड़ा लेखक Itzalive, स्रोत
* दूसरी जांच पर, यदि मैं अपने ऐप के दो उदाहरण चलाता हूं तो दूसरे को भी जारी रखने देता है।
जोड़ा लेखक Itzalive, स्रोत

कोई जवाब नहीं है

0