Jeden z moich klientów miał wyjątek, gdy próbował użyć mojego produktu. Otrzymałem stos wywołań wyjątku, który wystąpił, którego górna część to:
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)
Szukając tego w Google, znalazłem wiele postów na blogu, w których stwierdzono, że ten wyjątek jest generowany, gdy w folderze% TEMP% jest więcej niż 65535 plików tymczasowych, a rozwiązaniem jest po prostu wyczyszczenie starych plików tymczasowych. Mogę poprosić klienta o zrobienie tego, ale może to być tylko tymczasowe rozwiązanie - co zrobić, jeśli regularnie korzysta z innego oprogramowania, które często wywołuje GetTempFileName, co spowoduje, że problem będzie się powtarzał?
Nie mogę po prostu programowo wyczyścić folderu% TEMP%, ponieważ może to w jakiś sposób uszkodzić coś innego i nie mogę uniknąć wywołania GetTempFileName (i zamiast tego używania własnego folderu tymczasowego), ponieważ to nie ja, ale kod WPF, który go wywołuje.
Czy jest na to trwałe rozwiązanie?
AKTUALIZACJA : Potwierdziłem, że problem polegający na przepełnieniu folderu% TEMP% plikami dziennika nie jest spowodowany moim własnym kodem, a musi być spowodowany przez inną aplikację innej firmy na komputerze klienta. Przyjrzałem się też implementacji Cursor.LoadFromStreami na pewno nie jest to wina - generuje plik tymczasowy, ale potem usuwa go w finallybloku.