并行读取多个XML文件并插入数据库

时间:2016-10-24 15:12:37

标签: c# xml task-parallel-library

随着性能的提高,我希望并行读取10个XML文件并在数据库中插入数据。

1.如何实现并行读取和数据库插入? 即,当一个文件正在读取已读取的XML文件的插入数据时。

2.如何并行处理多个XML文件(包括读取和数据库插入)。 即同时处理10个文件。 语言C#

Used Task.Factory.StartNew(() => Method1(), CancellationToken.None, 
                           TaskCreationOptions.LongRunning, TaskScheduler.Default);

但是Method1()中的方法只被调用一次。

1 个答案:

答案 0 :(得分:1)

使用标准的生产者/消费者模式。

var xmlFiles = new BlockingCollection<XDocument>();

var readFiles = Task.Run(() =>
{
    try
    {
        foreach (var file in Directory.EnumerateFiles(".", "*.xml"))
            xmlFiles.Add(XDocument.Load(file));
    }
    finally { xmlFiles.CompleteAdding(); }
});

var processFiles = Task.Run(() =>
{
    foreach (var xml in xmlFiles.GetConsumingEnumerable())
    {
        // Insert data to database
    }
});

Task.WaitAll(readFiles, processFiles);

此方法从磁盘提供独立的读取文件并将数据写入数据库。