线程问题(读取和写入一个excel文件)

时间:2011-02-23 20:41:00

标签: c# multithreading excel oledbconnection

我有应用程序,它做了一些事情。通常他们的主要任务是在从excel文件获取数据后分析和绘制图表。这个应用程序最多可以同时执行。 10分析,每个分析都在单独的tabPage控件中的单独线程中执行。当出现3个问题时,一切都很棒。

  1. 我无法从一个excel文件中读取数据做一些分析。如果我正在使用一个文件到一个分析,并且我想将这个文件用于另一个,那么这是不可能的,因为有一些按摩,这个文件是由另一个进程实际使用的。要从excel文件中读取数据,我正在使用oleDBConnection模式。如何解决这个问题。

  2. 将数据写入一个文件时遇到同样的问题。如何强制我的应用程序将相同的消息从不同的线程写入一个文件。

  3. 如果我想关闭我的应用程序(当分析之一正在工作时),会向我显示一些通信信息:“中断持续线程(或类似的东西)”。我不知道为什么。我支持这个

  4. 请帮助我解决这个问题因为我试图解决它星期一而且没有效果:(

1 个答案:

答案 0 :(得分:0)

可能的例子

string  FullExcelFilePath = "C:\ExcelFile.xls";


Excel.Application xlApp = new Excel.Application()

Excel.WorkBook xlWorkBook1 = xlApp.WorkBooks.Add(FullExcelFilePath);
Excel.WorkBook xlWorkBook2 = xlApp.WorkBooks.Add(FullExcelFilePath);

//then in your first ThreadCall
foreach(Excel.WorkSheet in xlWorkBook1.Sheets)
{
//get what you want
}


//then in your 2nd ThreadCal
foreach(Excel.WorkSheet in xlWorkBook2.Sheets)
{
//get what you want
}

你可以做的其他选择是:

您可以为其他线程复制Xls,然后

在其他主题中使用xls文件的副本。

File.Copy(strFileName, strDestination);

然后删除它

File.Delete(strFileNameSecondVersion)