c# - 有效地使用 XmlDocument.Save()

标签 c# .net xml save

我正在使用 C# 中的 .XML 文档,在我的代码范围内多次从中选择节点、添加节点和删除节点。

此文档的所有 XML 编辑都包含在一个类中,其他类会调用该类。

由于数据访问类无法判断使用它的类是否已完成文档编辑,因此它没有关于是否/何时保存的逻辑。

可以在每次修改文档后保存,但我担心性能问题。

或者我可以假设/希望它会被其他使用它的类保存(我创建了一个单行公共(public)方法来保存文档,所以另一个类可以请求保存)。

第二个选项与我有关,因为我觉得我应该以某种方式在全局范围内强制执行它,以避免调用它和不提交修改。到目前为止,永远不会出现需要回滚的情况;任何更改都是应该提交的更改。

.Net(或编码设计)是否有办法在这种情况下平衡性能和安全性?

最佳答案

如果你总是想保存更改(只是不知道什么时候),那么你可以将保存命令添加到类 destructor .这样您就知道更改将始终保存。

如果您需要其他帮助或想要示例,请发表评论,否则请选择正确答案。

更新:我注意到类析构函数可能会在其他对象(如 FileStream)已被释放后触发。
我建议您在析构函数中测试此条件,并实现和使用 IDisposable界面。然后您可以订阅 Application.Exit事件或 Application.ApplicationExit事件和调用在那里处置。
请务必将代码保留在析构函数中(但请确保将其放在 try block 中),以防程序崩溃或出现其他意外退出。

关于c# - 有效地使用 XmlDocument.Save(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11216762/

相关文章:

c# - Linq Query 一直抛出 "Unable to create a constant value of type System.Object....",为什么?

c# - Entity Framework 运行存储过程和 native 查询性能注意事项

c# - 如何在代码(而不是配置).NET/C# 中设置 ServiceHostingEnvironment.AspNetCompatibilityEnabled = true

java - fragment 内容未出现在手机上

java - 从 xslt 调用 java 静态方法时出错

c# - ReportViewer 控件不显示报告

c# - 在另一个代理中包装 RemotingProxy 的 __TransparentProxy 抛出 RemotingException

c# - C# : Does it sleep the thread the object was instantiated in, 中的 Thread.Sleep() 或我从中调用该方法的线程?

.net - 将 "fake drive"添加到 Windows 资源管理器

jquery - 谷歌 XML 建议