Поскольку у меня есть инструмент, который должен выполнять большую часть работы в один момент, я хочу показать окно с текстом и индикатор выполнения во время выполнения работы.
Моя проблема в том, что из-за огромной нагрузки работы окно никогда не рисуется и не обновляется.
Я знаю, что мне обычно нужно использовать дополнительный поток для работы, но я должен использовать 2 коллекции и службу базы данных из текущего потока.
Текущий код похож на
StatusWindow SW = new StatusWindow();
StatusViewModel SVM = new StatusViewModel();
SVM.MaxNum = BigNumber;
SW.Show();
for (int i=0; i<BigNumber; i++)
{
List<AType> ItemsToCreate = Func1();
List<AType> ItemsToDelete = Func2();
foreach (AType cItem in ItemsToCreate)
DB.CreateItem(cItem);
foreach (AType cItem in ItemsToDelete)
DB:DeleteItem(cItem);
SVM.CurrentNum = i;
}
SW.Close();
Я также читал об Диспетчере, но я не думаю, что он очень удобен в этом сценарии, так как доступ к основному потоку будет слишком большим.
Есть предложения?
Спасибо