Один із моїх клієнтів отримував виняток, коли він намагався використовувати мій продукт. Я отримав код виклику виключення, яке сталося, вершина якого:
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 тимчасових файлів, і що рішення полягає в тому, щоб просто очистити старі тимчасові файли. Я можу попросити замовника зробити це, але це може бути лише тимчасовим рішенням - а що, якщо вони регулярно запускають якусь іншу частину програмного забезпечення, яка часто робить дзвінки до GetTempFileName, що змушує проблему повторюватися знову і знову?
Я не можу просто програмно очистити папку% TEMP%, оскільки це може якимось чином пошкодити щось інше, і я не можу уникнути виклику GetTempFileName (і використання натомість власної тимчасової папки), оскільки це викликаю не я, а код WPF.
Чи існує якесь постійне рішення для цього?
ОНОВЛЕННЯ : Я підтвердив, що проблема, коли папка% TEMP% переповнена файлами журналів, не викликана моїм власним кодом, а повинна бути спричинена якоюсь іншою стороннім додатком на машині клієнта. Я також розглянув реалізацію, Cursor.LoadFromStreamі це, безсумнівно, не винна - вона генерує тимчасовий файл, але потім видаляє його в finallyблоці.