जब भी उन्होंने मेरे उत्पाद का उपयोग करने की कोशिश की, मेरे ग्राहकों में से एक को अपवाद मिला। मुझे उस अपवाद का कॉलस्टैक प्राप्त हुआ जो हुआ था, जिसमें से शीर्ष है:
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.__Error.WinIOError()
at System.IO.Path.GetTempFileName()
at System.Windows.Input.Cursor.LoadFromStream(Stream cursorStream)
at System.Windows.Input.Cursor..ctor(Stream cursorStream)
इसे देखते हुए, मैंने पाया कि इस अपवाद को कहते हुए बहुत सारे ब्लॉग पोस्ट फेंके गए जब% TEMP% फ़ोल्डर में 65535 से अधिक अस्थायी फ़ाइलें हैं, और इसका समाधान केवल पुरानी अस्थायी फ़ाइलों को साफ़ करना है। मैं ग्राहक को ऐसा करने के लिए कह सकता हूं, लेकिन यह केवल एक अस्थायी समाधान हो सकता है - क्या होगा अगर वे नियमित रूप से कुछ अन्य सॉफ़्टवेयर चला रहे हैं जो गेटटैम्पिलनेम को लगातार कॉल करते हैं, जो समस्या को बार-बार हल करेगा?
मैं बस प्रोग्राम को% TEMP% फ़ोल्डर से साफ़ नहीं कर सकता, क्योंकि यह किसी और चीज़ को नुकसान पहुंचा सकता है, और मैं GetTempFileName (और इसके बजाय अपने खुद के अस्थायी फ़ोल्डर का उपयोग करके) को कॉल करने से नहीं बच सकता क्योंकि यह मुझे नहीं बल्कि WPF कोड कह रहा है।
क्या इसका कोई स्थायी समाधान है?
अद्यतन : मैंने पुष्टि की है कि लॉग फ़ाइल के साथ% TEMP% फ़ोल्डर ओवरफ़्लो होने की समस्या मेरे अपने कोड के कारण नहीं है, और ग्राहक की मशीन पर कुछ अन्य तृतीय पक्ष एप्लिकेशन के कारण होना चाहिए। मैंने इसके क्रियान्वयन पर भी ध्यान दिया Cursor.LoadFromStreamऔर यह निश्चित रूप से गलती पर नहीं है - यह एक अस्थायी फ़ाइल उत्पन्न करता है, लेकिन फिर इसे finallyब्लॉक में हटा देता है ।