【问题标题】:How to run 2 StreamWriters in parallel [closed]如何并行运行 2 个 StreamWriters [关闭]
【发布时间】:2015-08-23 12:33:51
【问题描述】:

最近我正在做一个项目,同时编写一个 csv 文件和一个 XML 文件。 它们包含相同的元数据信息,如何在C#中同时打开两个StreamWriters?

【问题讨论】:

  • 同一个元数据是什么意思?文件名、修改日期、...?
  • “同时”?一个然后另一个有什么问题?
  • @Octopoid:这很有用;例如,如果 xml 和 csv 都存储相同的格式;并且计算元素需要很长时间。
  • 我投票决定将此问题作为题外话结束,因为这是一个答案很简单的问题,表明对编程语言/平台了解甚少,因此不适合 SO。
  • @PedroC88 我认为多线程是答案,因为两个StreamWriters不能同时打开,它们拥有相同的线程

标签: c# multithreading async-await task-parallel-library streamwriter


【解决方案1】:

这个问题太笼统了,所以答案很笼统。为了“同时编写 csv 文件和 XML 文件”,您必须使用Task Parallel LibraryTPL - 推荐)或 .NET 中可用的其他技术来实现多线程,然后运行两个不同线程上的上述过程(在阻塞或非阻塞模式下)。

有关 TPL 实施的更多详细信息:https://msdn.microsoft.com/en-us/library/dd537609%28v=vs.110%29.aspx

希望这会有所帮助。

【讨论】:

  • 这是我正在寻找的答案,谢谢
  • 不客气。我很高兴它对你有用。请检查接受的答案。祝你的项目好运。最好的问候,
  • 绝对不正确。两个StreamWriters可以存在于同一个线程上;您可以交替写入每个文件(这就是您在线程模型中所做的一切)。为此实现 TPL 或线程是浪费时间,尤其是因为磁盘 IO 无论如何都会成为瓶颈。
  • @DanPuzey:我不同意“绝对不正确”的说法。陈述。如果您仔细阅读包含非常重要的“同时”条件的确切问题,单线程将通过在这两个流写入操作之间切换来提供“伪并行”执行,而 TPL 解决方案在可能的情况下拥有双核 CPU 和两个硬盘驱动器将提供真正的并行执行,具有一定的性能优势以及非阻塞磁盘 IO 操作(即一个不需要等待另一个完成)。最好的问候,
  • 您已经添加了很多原始问题中没有的额外细节:两个硬盘驱动器,两个内核等。实际的原始问题是“如何在 C# 中打开两个 StreamWriters同时?”答案是:创建两个StreamWriters!
猜你喜欢
  • 2020-12-23
  • 2021-11-10
  • 1970-01-01
  • 2017-08-27
  • 2010-09-17
  • 2021-11-25
  • 1970-01-01
  • 2017-12-08
  • 1970-01-01
相关资源
最近更新 更多