我的一个客户在尝试使用我的产品时遇到了异常.我获得了发生的异常的callstack,其顶部是:
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)
Run Code Online (Sandbox Code Playgroud)
谷歌搜索这个,我发现很多博客文章说明当%TEMP%文件夹中有超过65535个临时文件时会抛出此异常,并且解决方案是简单地清除旧的临时文件.我可以要求客户这样做,但这可能只是一个临时的解决方案 - 如果他们经常运行其他一些软件,经常调用GetTempFileName,这将使问题一遍又一遍地重复出现?
我不能只是以编程方式清除%TEMP%文件夹,因为这可能会以某种方式损坏其他东西,我无法避免调用GetTempFileName(并使用我自己的临时文件夹),因为它不是我,而是WPF代码正在调用它.
这有什么永久的解决方案吗?
更新:我已经确认%TEMP%文件夹溢出日志文件的问题不是由我自己的代码引起的,而且必须由客户机器上的其他第三方应用程序引起.我也查看了实现,Cursor.LoadFromStream它肯定没有错 - 它生成一个临时文件,但然后在finally块中删除它.
我借助File.Copy()方法将图像文件从一个文件夹复制到另一个文件夹.
我需要在复制的图像文件粘贴到文件夹之前为其提供唯一的文件名.
知道如何实现这个吗?