Мне нужно создать программу, которая распараллеливает процесс списка таблиц, содержащихся в табличной модели.
Вот код, который я использую:
Server[] svrList = new Server[tables.getTables.Count];
Parallel.For(0, tables.getTables.Count, i =>
{
svrList[i] = ServerConnect(connectionString);
Model m = svrList[i].Databases[database].Model;
log.Info("process table " + tables.getTables.ElementAt(i).Name);
Table t = m.Tables[tables.getTables.ElementAt(i).Name];
t.RequestRefresh(Microsoft.AnalysisServices.Tabular.RefreshType.Full);
m.SaveChanges();
log.Info("Finish " + tables.getTables.ElementAt(i).Name);
svrList[i].Disconnect();
}
);
в случае сбоя одной таблицы остальные должны загружаться правильно.
В этом коде таблицы обрабатываются правильно, но обрабатываются последовательно.
Я использую разные подключения к серверу для каждой таблицы, потому что, если я использую то же соединение, у меня появляется эта ошибка:
the connection cannot be used while an xmlreader object is open
Как я могу решить эту проблему?
Спасибо