c# - XElement 在 C# 中使用 async/await 保存文件

标签 c# filestream xelement async-await c#-5.0

我尝试从具有异步/等待功能的 XElement 对象编写 xml 文件。 但我意识到 XElement.Save() 不能与 async/await 一起运行。

也许解决方案是将 XElement.Save(Stream) 与 FileStream 对象一起使用...

所以,我写了一些代码如下,但很难处理文件流。

public async Task SaveAsync(XElement xml, string filename)
{
    using (var fs = new FileStream(filename, FileMode.Create))
    {
        xml.Save(fs);
        await fs.WriteAsync(**please_help_me**);
    }
}

如何使用这种方法或是否有任何其他解决方案?

最佳答案

如果您真的不想阻塞 IO(并挂起 ThreadPool 线程/您的线程),您可能需要使用临时 MemoryStream:

using(var ms = new MemoryStream())
using(var fs = new FileStream("myFile", FileMode.Create))
{
    xml.Save(ms);
    ms.Position = 0;
    await ms.CopyToAsync(fs)
}

关于c# - XElement 在 C# 中使用 async/await 保存文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12481456/

相关文章:

Silverlight 4.0 文件流

c# - C#文件流在写/读操作完成之前不会阻塞

c# 将数组列表复制到数组

python - 通过文本和文件流保存 openpyxl 文件

.net - XElement 无法加载带有重音字符的文件

c# - 在我的 XML 文件中包含 xmlns

c# - 在c#中使用xelement创建动态xml

c# - 在 C# 中使用选择计数 (*)

c# - 后台任务在调试期间在生命周期事件中可见但不会自动运行

c# - 如何将 Number.Double Access 列值转换为 Decimal?