我正在编写一个多线程的C#应用程序,为Excel文件提供一些统计信息。 我使用以下代码打开该文件:
private static Excel.Application excelApp = new Excel.Application();
private static Excel.Workbook workbook = excelApp.Workbooks.Open(path);
private static Excel.Worksheet worksheet = workbook.ActiveSheet;
private static Excel.Range range = worksheet.UsedRange;
private static int totalColumns = worksheet.UsedRange.Columns.Count;
为了从这些列中收集数据,我正在为每个列使用一个线程。
for (int columnCount = 1; columnCount <= /*range.Columns.Count*/totalColumns; columnCount++)
{
Thread worker = new Thread(printSpread);
worker.Start(columnCount);
}
如果我不在每个线程中启动一个新的Excel应用程序,就会出现HRESULT: 0x800A01A8错误。 我的问题是,我是否必须这样做,还是有机会只使用一个Excel应用程序? 我认为,从单个应用程序中通过多个线程访问数据存在问题,这可能解释了COM异常。 感谢你的时间和帮助。