Один из моих клиентов получал исключение всякий раз, когда пытался использовать мой продукт. Я получил стек вызовов возникшего исключения, верхняя часть которого:
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блоке.