c# - XDocument.Save() 时出现内存异常

标签 c# wpf linq exception

我正在尝试将 XDcoument 保存到没有足够可用存储空间的拇指驱动器。 (这是应用程序的特殊测试条件)虽然应用程序给出了如下所示的异常,但我无法在 XDocument.Save(filePath) 周围的 try catch block 中得到它。看起来这是一个延迟的 throw 。这是 LINQ 问题还是我做错了什么?

alt text http://img211.imageshack.us/img211/8324/exce.png

 System.IO.IOException was unhandled
 Message="There is not enough space on the disk.\r\n"
 Source="mscorlib"
 StackTrace:
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.WriteCore(Byte[] buffer, Int32 offset, Int32 count)
   at System.IO.FileStream.FlushWrite(Boolean calledFromFinalizer)
   at System.IO.FileStream.Dispose(Boolean disposing)
   at System.IO.FileStream.Finalize()

最佳答案

您在框架中发现了一个错误。 XDocument.Save(string) 使用“using”语句来确保输出流得到处理。这取决于您在处理指令中使用的编码,但内部 System.Xml.XmlUtf8RawTextReader 将是实现文本编写器的常用编码。

错误:编写该类的 Microsoft 程序员忘记实现 Dispose() 方法。仅实现了 Close() 方法。

奇怪的是,connect.microsoft.com 反馈站点尚未报告此错误。它应该在一般使用中引起麻烦,因为文件在终结器线程运行之前一直保持打开状态。虽然这通常不会花那么长时间,几秒钟左右。除非你在写入后立即退出程序并且不幸在缓冲区被刷新的那一刻用完了磁盘空间。

此错误的解决方法是改用 XDocument.Save(TextWriter) 重载,传递其编码与 XML 编码匹配的 StreamWriter。

关于c# - XDocument.Save() 时出现内存异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2059966/

相关文章:

c# - 上传照片并将其作为 json 对象发送

c# - 如何在 C# System.Net.Mail.MailMessage 中创建多行正文

c# - 我如何处理列表框WPF XAML上的单击和双击事件

c# - 如何将 Wpf 项目迁移到新的 VS2017 格式

c# - Skip and Take 在 Entity Framework 中生成异常

c# - XPath Query C#动态提取节点

c# - 一个 WrapPanel,其中选择划分面板以显示详细 View ?

c# - 从 Linq 表达式中获取参数值

c# - 使用 LINQ 选择独特的项目

c# - 什么是 --- 内部异常堆栈跟踪结束 ---