Я использую Parallel.ForEach в качестве образца:
ParallelOptions parallelOpt = new ParallelOptions();
parallelOpt.MaxDegreeOfParallelism = 2;
Parallel.ForEach(list, parallelOpt, info =>
{
int threadID = Thread.CurrentThread.ManagedThreadId;
//use tmp var to avoid conflic with original var when using thread
ML_Scheduler tmp = new ML_Scheduler();
tmp = ObjectCopier.Clone<ML_Scheduler>(info);
Stopwatch sw1 = Stopwatch.StartNew();
logger.Info("\r\n\r\n");
logger.Info(string.Format("[{0}]****** Begin to schedule work with ThreadID {0} for ScheduleID {1}.", threadID, tmp.SchedulerID));
WorkWithEachSchedule(threadID, tmp, tmp.SchedulerID, dtNow, tmp.StartTime, false);
TimeSpan time1 = TimeSpan.FromSeconds(sw1.ElapsedMilliseconds / 1000.0);
logger.Info(string.Format("[{0}]****** Finish to work with ThreadID {0} (during time : {1}).", threadID, time1.ToString(@"hh\:mm\:ss\:fff")));
}
);
В функции WorkWithEachSchedule я просто делаю:
Создайте таблицу данных с примерно 10000 записей для тестирования.
Экспорт данных в Excel 2007
Сохранить в локальную папку.
В начале, когда я проверяю диспетчер задач в деталях, я вижу, что процессор и память работают.
Но через несколько минут программа зависнет (как на примере изображения)
Не работает ни ЦП, ни Память, программа больше ничего не работает.
И я также не могу отладить по точке останова.
Обновление:
В своем коде я использую функцию ExporttoExcel по следующей ссылке: http://mikesknowledgebase.azurewebsites.net/pages/CSharp/ExportToExcel.htm
И когда я удаляю эту функцию, программа может работать правильно.
Я не знаю, почему эта функция вызывает проблему.
Любой совет. Спасибо.