我的如下代碼:可以在多線程中對Excel表進行排序嗎?
Parallel.ForEach(listSheets, (xlWorkSheet1) =>
{
// Excel.Worksheet xlWorkSheet1 = (Excel.Worksheet)excelbk.Worksheets["Sheet1"];
xlRange = (Excel.Range)xlWorkSheet1.Cells[xlWorkSheet1.Rows.Count, 1];
lock (xlRange)
{
// nRows = (long)xlRange.get_End(Excel.XlDirection.xlUp).Row;
nRows = xlWorkSheet1.UsedRange.Cells.Rows.Count;
xlRange = (Excel.Range)xlWorkSheet1.Rows["5:" + nRows, Type.Missing];
xlRange.Sort(xlRange.Columns[clnum1, Type.Missing],
Excel.XlSortOrder.xlAscending,
xlRange.Columns[clnum2, Type.Missing],
Type.Missing,
Excel.XlSortOrder.xlAscending,
Type.Missing,
Excel.XlSortOrder.xlAscending,
Excel.XlYesNoGuess.xlNo,
Type.Missing,
Type.Missing,
Excel.XlSortOrientation.xlSortColumns,
Excel.XlSortMethod.xlStroke,
Excel.XlSortDataOption.xlSortTextAsNumbers,
Excel.XlSortDataOption.xlSortNormal,
Excel.XlSortDataOption.xlSortNormal);
Console.WriteLine("Sheet{0} have been sorted", xlWorkSheet1.Name);
}
}
listSheets被定義爲一個列表,當我調試它,它表明了COM異常問題一直沒有運行錯誤。
System.Runtime.InteropServices.COMException應用程序是忙(RPC_E_CALL_REJECTED 0x80010001)呼叫是由被叫(RPC_E_SERVERCALL_RETRYLATER 0x8001010A)拒絕
錯誤的詳細信息是什麼? –
你能更詳細地瞭解錯誤信息嗎?排序是否獨立運行(沒有並行部分)? – Mikeb
嘗試使用解決方案提示http://stackoverflow.com/questions/11908397/c-sharp-excel-beforesave-thread – Nagg