Я потратил некоторое время на изучение и изучение лучших практик, чтобы избежать блокировки потока пользовательского интерфейса при попытке обработки данных в потоке пользовательского интерфейса.В частности, я использую async / await, где могу.Однако при заполнении DataGrid через Binding я заметил, что мой пользовательский интерфейс зависает после завершения обработки команды, и обработка передается обратно в пользовательский интерфейс.
XAML
<DataGrid ItemsSource="{Binding EndpointModel.DataView}"
AutoGenerateColumns="True" IsReadOnly="True">
</DataGrid>
Выполнение команды DataModel:
public async void CommandExecute()
{
...
JsonData = await accessor.GetDataAsync(new Endpoint.Params().Universe(universe)
.WithStart(start)
.WithEnd(end));
// Creates a very large DataTable within my display (30 x 350)
var grid = EndpointModel.CreateDataGrid(JsonData);
EndpointModel.DataView = grid.AsDataView();
}
Я прошел по коду для наблюдения за временем обработки, помещенные сообщения отладчика и обработка кажутся нормальными.Оператор ожидания занимает около 1,5 секунд, а обработка сетки в конце занимает несколько мс.Тем не менее, когда я возвращаюсь из CommandExecute (), требуется около 3-5 секунд, прежде чем пользовательский интерфейс реагирует.Данные заполняются хорошо - это просто навсегда.Я не знаю, ожидается ли это или я контролирую это.
спасибо.