У меня есть метод OnLoadShapeFilePolygonsCommand()
, который считывает детали многоугольника (геометрии) из файла и создает некоторые объекты. Затем они загружаются в наблюдаемую коллекцию, которая связана с сеткой данных.
Пока все эти обработки я показываю индикатор выполнения. Просто добавил индикатор выполнения со свойством IsIndeterminate
, установленным на true
, и когда все данные загружены, я установил видимость индикатора выполнения на false
.
Моя проблема в том, что при создании объектов многоугольника пользовательский интерфейс зависает (индикатор выполнения зависает).
Я что-то здесь не так делаю? Пожалуйста, помогите.
private async void OnLoadShapeFilePolygonsCommand()
{
// ...
// some code
await Task.Factory.StartNew(() =>
{
List<Ploygon> collection = new List<Ploygon>();
foreach (Graphic g in graphics)
{
collection.Add(new Ploygon(g,.. .. ..);
}
return collection;
},CancellationToken.None, TaskCreationOptions.AttachedToParent, TaskScheduler.FromCurrentSynchronizationContext())
.ContinueWith((antecedent) =>
{
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Normal, ThreadStart)delegate ()
{
// MapPolygons is observable collection binded to datagrid.
MapPolygons.AddRange(antecedent.Result);
//...
});
},scheduler);
}
}