async Task ExecuteCommandGenerate(object o) { FieldView.ShowProgressBar(); updateBasePoly(); var hasIntersectingPolygon = World.Fields.Any(r => r.Polygon.CheckForIntersections()); if (hasIntersectingPolygon && !ParentPresenter.MasterView.ShowInfoYesNoMessage("Warning", "At least one polygon has intersecting lines. Do you still want to continue?")) { return; } FieldView.UpdateProgressBar("Starting generation"); await composer.Compose(World); var layer = composer.ComposedLayer; FieldView.UpdateProgressBar("Object initialization"); await Task.Factory.StartNew(() => { ParentPresenter.HeightmapPresenter.InitializeGeneratedObjects(layer); ParentPresenter.MasterView.SelectHeightmapView(); } , CancellationToken.None , TaskCreationOptions.None , _uiScheduler); FieldView.CloseProgressBar(); }