gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:28:37 25 4
gpt4 key购买 nike

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

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

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

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

在“设置”的情况下,它是关于“.newcfg”文件的,并且恰好在“保存”方法调用时发生。

问题是:这怎么可能?以及如何处理/预防?

我猜默认实现会关闭 XMLWriters 并正确执行所有操作。

最佳答案

我们有一个用户遇到了与您的“设置”案例相同的问题(关于“.newcfg”)。事实证明,当他们关闭 Norton Antivirus 时,问题就消失了!

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

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

希望这对您有所帮助!

关于c# - Settings.Default.Save() 和 Cursor.LoadFromStream 导致 System.IO.IOException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52524113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com