并行化,最小化时间从Excel文件中读取页数

时间:2016-09-18 09:11:08

标签: c# excel multithreading parallel-processing parallel.foreach

我的Excel文件有4张,所有张数大约有144564条记录。

在我的代码中,fill_data方法将调用4个方法,每个方法读取一个表。 现在需要的正常时间是7.02分钟。

fill_data ()
{
    Excel.Application ExcelApplication;
    Excel.Workbooks ExcelWorkbooks;
    Excel.Workbook ExcelWorkbook1;

    ExcelApplication = new Excel.Application();  /// ApplicationClass()
    ExcelWorkbooks = ExcelApplication.Workbooks;
    try
    {
                ExcelWorkbook1 = ExcelApplication.Workbooks.Open(fileName1, 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true);
    }
    catch
    {
                return;
    }

    active1 = ExcelWorkbook1.Worksheets.get_Item(1); // students list
    active2 = ExcelWorkbook2.Worksheets.get_Item(2);
    active3 = ExcelWorkbook3.Worksheets.get_Item(3);
    active4 = ExcelWorkbook4.Worksheets.get_Item(4);

    fill_students();
    fill_instructors();
    fill_exams();
    fill_rooms();

}

 public static void fill_students(){
      Excel.Worksheet active = active1;
      //Read all Cells at Sheet
 }

我尝试使用Parallel功能使4个方法并行运行,而不是显式调用我在Parallel类中使用invoke的方法。如下:

fill_data ()
{
    .....
    Parallel.Invoke(
            () => fill_students(),
            () => fill_instructors(),
            () => fill_exams(),
            () => fill_rooms()
        );
}

执行时间没有增强!这是7.12分钟! 出了什么问题?如何最小化这个时间?

0 个答案:

没有答案