Một trong những khách hàng của tôi bị ngoại lệ bất cứ khi nào anh ta cố gắng sử dụng sản phẩm của tôi. Tôi đã nhận được callstack của ngoại lệ đã xảy ra, phần trên cùng của nó là:
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)
Trên Googling này, tôi thấy nhiều bài đăng trên blog nói rằng ngoại lệ này được đưa ra khi có hơn 65535 tệp tạm thời trong thư mục% TEMP% và giải pháp đơn giản là xóa các tệp tạm thời cũ. Tôi có thể yêu cầu khách hàng làm điều đó, nhưng đây có thể chỉ là giải pháp tạm thời - điều gì sẽ xảy ra nếu họ thường xuyên chạy một số phần mềm khác thực hiện các cuộc gọi thường xuyên đến GetTempFileName, điều này sẽ khiến sự cố lặp đi lặp lại?
Tôi không thể xóa thư mục% TEMP% theo chương trình, vì điều đó có thể làm hỏng thứ gì đó bằng cách nào đó và tôi không thể tránh gọi GetTempFileName (và thay vào đó là sử dụng thư mục tạm thời của riêng tôi) vì không phải tôi mà là mã WPF đang gọi nó.
Có giải pháp lâu dài nào cho việc này không?
CẬP NHẬT : Tôi đã xác nhận rằng sự cố trong đó thư mục% TEMP% tràn tệp nhật ký không phải do mã của riêng tôi gây ra và phải do một số ứng dụng bên thứ 3 khác trên máy của khách hàng gây ra. Tôi cũng đã xem xét việc triển khai Cursor.LoadFromStreamvà nó chắc chắn không có lỗi - nó tạo ra một tệp tạm thời, nhưng sau đó xóa nó trong finallykhối.