Uno de mis clientes tenía una excepción cada vez que intentaba utilizar mi producto. Obtuve la pila de llamadas de la excepción que se había producido, la parte superior de la cual es:
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)
Al buscar en Google, encontré muchas publicaciones de blog que indican que esta excepción se produce cuando hay más de 65535 archivos temporales en la carpeta% TEMP%, y que la solución es simplemente borrar los archivos temporales antiguos. Puedo pedirle al cliente que haga eso, pero esto podría ser solo una solución temporal: ¿qué pasa si ejecutan regularmente algún otro software que realiza llamadas frecuentes a GetTempFileName, lo que hará que el problema vuelva a ocurrir una y otra vez?
No puedo simplemente borrar programáticamente la carpeta% TEMP%, ya que eso de alguna manera podría dañar algo más, y no puedo evitar llamar a GetTempFileName (y usar mi propia carpeta temporal en su lugar) ya que no soy yo, sino el código WPF el que lo llama.
¿Existe alguna solución permanente para esto?
ACTUALIZACIÓN : He confirmado que el problema en el que la carpeta% TEMP% se desborda con archivos de registro no es causado por mi propio código, y debe ser causado por alguna otra aplicación de terceros en la máquina del cliente. También examiné la implementación de Cursor.LoadFromStreamy seguramente no tiene la culpa: genera un archivo temporal, pero luego lo elimina en el finallybloque.