C# Settings.Default.Save()和Cursor.LoadFromStream导致System.IO.IOException

C# Settings.Default.Save()和Cursor.LoadFromStream导致System.IO.IOException,c#,wpf,C#,Wpf,在.NET内置组件中发生了两个奇怪的异常 这是相同的IO异常:“进程无法访问文件“…”,因为它正被另一个进程使用” 在“游标”的情况下,它是关于“.tmp”文件的,当重新测量WPF网格时,异常发生在调用序列的末尾: System.Windows.Controls.Grid.MeasureCell ... System.Windows.Controls.GridViewColumnHeader.GetCursor ... System.Windows.Input.Cursor.LoadFromSt

在.NET内置组件中发生了两个奇怪的异常

这是相同的IO异常:“进程无法访问文件“…”,因为它正被另一个进程使用”

在“游标”的情况下,它是关于“.tmp”文件的,当重新测量WPF网格时,异常发生在调用序列的末尾:

System.Windows.Controls.Grid.MeasureCell
...
System.Windows.Controls.GridViewColumnHeader.GetCursor
...
System.Windows.Input.Cursor.LoadFromStream <-- here
System.Windows.Controls.Grid.MeasureCell
...
System.Windows.Controls.GridViewColumnHeader.GetCursor
...

System.Windows.Input.Cursor.LoadFromStream我们有一个用户与您的“设置”案例(关于“.newcfg”)问题相同。事实证明,当他们关闭诺顿杀毒软件时,问题就消失了

我之前做的一些研究可能有用:

  • 检查是否有多个线程能够调用Settings.Default.Save()。如果多个线程相互竞争,则可能会产生此错误,尽管我知道.NET应该使此线程安全
  • 如果在同一线程内连续快速调用Settings.Default.Save(),则可能会发生这种情况。如果多个类(例如用户/自定义控件)都希望保存某些设置,但没有一个类需要知道其他类需要保存某些设置,并且关闭父窗体会导致每个控件调用save()
  • 检查用户在目标文件夹和.exe所在文件夹中是否具有适当的写入权限。我的同事看到了这两者之间奇怪的联系
  • 查找代码中调用Settings.Default.Save()的所有实例,并在所有实例上设置断点。当你运行这个程序时,你可能会注意到他们被调用的方式中有一些可疑的行为或模式
希望这有帮助