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

本文关键字:插入 数据库 文件 XML 读取 并行 | 更新日期: 2023-09-27 18:14:34

为了提高性能,我想并行读取10个XML文件,并在数据库中插入数据。

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

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

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

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

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

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

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);

该方法提供了从磁盘独立读取文件和向数据库写入数据的功能。