处理动态创建的目录中的文件

时间:2014-02-23 19:51:46

标签: c# directory multiple-instances

我对以下问题进行了广泛的搜索而没有成功。

逐行处理C#中的大型文本文件并创建文本消息并发送到JMS队列所花费的时间比允许的多。我正在将大文件分解为较小的文件并运行文本消息转换程序的多个实例。

大文本文件的大小不同,因此创建的较小文件的数量并不总是相同。我正在动态创建一个目录来保存每个较小的文本文件,以便文本消息转换程序的每个实例都有一个单独的目录可供使用。

我能够进行上述处理,但是如何获取文本消息转换程序的实例来运行和处理动态创建的目录中保存的每个小文件,每个目录一个实例。我打算从创建较小文件的程序中调用文本消息转换程序,并将它们放在动态创建的目录中。

由于

格雷格

2 个答案:

答案 0 :(得分:0)

循环遍历根目录,并为该文件夹中的每个目录启动一个进程,如下所示:

foreach (var dir in Directory.GetDirectories("z:\temp"))
{
    ProcessStartInfo psi = new ProcessStartInfo();
    psi.Arguments = String.Format("-dir=\"{0}\"", dir);
    psi.FileName = @"C:\Path\To\Your\Converter.exe";

    Process.Start(psi);
}

答案 1 :(得分:0)

我建议使用threads而不是单独的实例。线程重量轻于process,因为完成的工作彼此独立,您可以使用.net 4

中的并行线程
using System.Threading;

using System.Threading.Tasks;

string strParentDir = @"C:\ProgramData\Text2Msg\";
string[] strDirectories = Directory.GetDirectories(strParentDir)); 
Parallel.ForEach (string strDir in strDirectories)  
{  
             Txt2MsgConverter(strDir);
} 

public void Txt2MsgConverter(string strDirName)
{
   //your text to message code

}