У меня есть набор функций, заполняющих различные DataGrids объектами EF, подобными этому:
var items = db.Items.AsNoTracking().Where(n => n.CategoryId == categoryId);
var grid = grdItems as DataGrid;
grid.ItemsSource = items;
Проблема, с которой я столкнулся, заключается в том, что окно зависает, т.е. не может щелкнуть или сделать что-либо, пока не закончится приведенный выше код. После завершения сетки заполняются правильно, поэтому никаких проблем нет, но в течение коротких нескольких секунд он, похоже, потерпел крах.
Я хотел добавить простое окно / диалоговое окно с типом загрузки, чтобы по крайней мере пользовательский интерфейс отображал что-то для пользователя, а не то, что он вылетел. Моя проблема в том, что при добавлении frm.Show, frm.Hide до / после этого кода выше или при попытке использовать оверлей UserControl он никогда не отображается, потому что я ожидаю, что поток занят.
Я не использовал WPF очень долго и исторически я использовал формы, где в подобных случаях я использовал DoEvents, но, насколько я понимаю, это скорее вредно, чем полезно, поэтому я прошу Лучший способ обновить пользовательский интерфейс с загрузкой оверлея, пожалуйста. В частности, в случае заполнения DataGrid, и я ожидаю, что любые обрабатываемые конвертеры / Vaildators вносят вклад в занятость потока.