Я пытаюсь создать файл excel с помощью spreadsheetgear, а также Parallel.ForEach, для записи в ячейках, и иногда получаю исключение ссылочной ссылки. Есть ли какие-то настройки, которые мне нужно сделать, или настроить?Spreadsheetgear параллельно
ответ
Если вы намерены выполнять одновременную работу над одной книгой по нескольким потокам, каждый из ваших потоков должен получить/освободить блокировку через IWorkbookSet. GetLock() и ReleaseLock() на соответствующем IWorkbookSet при выполнении этой работы над книгой. В противном случае вы можете получить доступ к книге в непредвиденном состоянии, и могут возникнуть всевозможные, казалось бы, случайные исключения, подобные тем, которые вы видите. Пример:
// Create a new "workbook set".
IWorkbookSet wbs = Factory.GetWorkbookSet();
// Add a workbook under this "workbook set".
IWorkbook workbook = wbs.Workbooks.Add();
IWorksheet worksheet = workbook.ActiveWorksheet;
// Do your task (here I just insert single characters into cells in the sheet).
Parallel.ForEach("ABCDEFG", (char c) => {
// Must acquire a workbook set lock before doing anything to the workbook!
wbs.GetLock();
try
{
// Get next row to add character.
int nextRow = worksheet.UsedRange.Row + worksheet.UsedRange.RowCount;
// Add character to cell.
worksheet.Cells[nextRow, 0].Value = c;
}
finally
{
// Must release the workbook set lock.
wbs.ReleaseLock();
}
});
По крайней мере, для этого простого примера, такой подход не обеспечивает выигрыш в производительности, поскольку каждый поток должен ждать свою очередь, чтобы получить доступ к рабочей книге и добавить символ к листу. На самом деле этот подход, безусловно, ушивает производительности по сравнению с выполнением этой задачи в более линейном, многопоточном режиме.
Таким образом, в зависимости от специфики вашей задачи и объема работы, которую она делает в рабочей книге, и других вещей, которые могут быть успешно выполнены одновременно, такой подход может или не может обеспечить эффективность работы по сравнению с более линейным подходом ,
- 1. SpreadsheetGear Пользовательские описания функций
- 2. Spreadsheetgear - отредактируйте комментарий
- 3. Сводная диаграмма в SpreadsheetGear
- 4. Spreadsheetgear поддерживает блокировку файла
- 5. Spreadsheetgear not loading
- 6. CheckBox Operation in Spreadsheetgear
- 7. SpreadsheetGear Форматирование шрифта DataLabel
- 8. Руководство в Excel Использование SpreadSheetGear
- 9. Использование ProtectContents в IWorksheetin Spreadsheetgear
- 10. Настройка Application.ErrorCheckingOptions.BackgroundПроверка с помощью Spreadsheetgear
- 11. скопировать список в SpreadsheetGear IRange
- 12. Spreadsheetgear - как управлять панелью вкладок
- 13. Открытие файла xlsx, созданного с помощью SpreadSheetGear
- 14. Копирование фигур (особенно диаграмм) с помощью SpreadsheetGear
- 15. Может SpreadsheetGear CustomFunction передать ссылку на IRange
- 16. silverlight spreadsheetgear WorkbookView режим только для чтения
- 17. SpreadsheetGear range explorer Использование в приложении Windows
- 18. SpreadSheetGear - читать уникальные значения из столбца Excel
- 19. Как получить диапазон последнего столбца excel (spreadsheetgear)
- 20. Замерзший верхний ряд с использованием spreadsheetgear
- 21. Импортировать ячейку DateTime с использованием Spreadsheetgear
- 22. SpreadsheetGear SetArray двойной, когда Double.NaN присутствует
- 23. SpreadsheetGear - создать просмотр рабочей книги по коду
- 24. Сделать параллельно
- 25. параллельно уродовать
- 26. Позволяет ли предложение параллельно параллельно выравнивать параллельную оценку?
- 27. Вызов небезопасной DLL-функции из нескольких потоков Java параллельно Параллельно
- 28. Параллельно много csv от внешнего поставщика сети параллельно
- 29. OpenMP вложенные параллельно для петель против внутренних параллельно для
- 30. TestNG завод ходовых испытаний параллельно, даже если параллельно = ложь устанавливается