【发布时间】:2016-03-26 02:02:07
【问题描述】:
我有一些示例代码。
foreach (var currentFile in currentDirectory)
{
string[] contents = File.ReadAllText(currentFile).Split('%');
using (XmlWriter writer = XmlWriter.Create(currentFile.Replace(".txt",".xml")))
{
writer.WriteStartDocument();
writer.WriteStartElement("INFO");
writer.WriteStartElement("INFO");
writer.WriteElementString("USER", contents[1]);
writer.WriteElementString("USERDATA", contents[2]);
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();
}
}
我有这样的文本文件:MYNICKNAME % A LOT OF DATA。 现在我正在尝试使这个程序多线程。我应该挖什么方向?异步/等待?我对多线程真的很陌生。
【问题讨论】:
-
我们可能需要更多关于您正在尝试做什么的信息。您是否只需要对目录中的所有文件进行一次传递并将每个文件从文本转换为 xml?需要考虑的一件事是您是否是唯一访问这些文件的人。
-
并行只会使您的进程的 CPU 密集型部分受益。看起来你的很多进程都是 I/O,不会从并行性中受益。所以在处理 1 个文件的同时处理 3 个文件并不是一个现实的目标。
-
是的,我通过文件传递目录,然后处理它们并制作 xml 文件。所以目录中的每个文本文件都会有一个xml。我试图通过多线程使其更快 2-3 倍
-
在这种情况下,受磁盘 I/O 限制,并行任务甚至可能使事情变得更糟。
-
而
async/await将允许您“一劳永逸”,因此您不必等到一切都完成后再继续,但总体上不会使整个过程更快。跨度>
标签: c# multithreading