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