public async Task Progressor_Cancelable() { ArcGIS.Desktop.Framework.Threading.Tasks.CancelableProgressorSource cps = new ArcGIS.Desktop.Framework.Threading.Tasks.CancelableProgressorSource("Doing my thing - cancelable", "Canceled"); int numSecondsDelay = 5; //If you run this in the DEBUGGER you will NOT see the dialog //simulate doing some work which can be canceled await ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() => { cps.Progressor.Max = (uint)numSecondsDelay; //check every second while (!cps.Progressor.CancellationToken.IsCancellationRequested) { cps.Progressor.Value += 1; cps.Progressor.Status = "Status " + cps.Progressor.Value; cps.Progressor.Message = "Message " + cps.Progressor.Value; if (System.Diagnostics.Debugger.IsAttached) { System.Diagnostics.Debug.WriteLine(string.Format("RunCancelableProgress Loop{0}", cps.Progressor.Value)); } //are we done? if (cps.Progressor.Value == cps.Progressor.Max) { break; } //block the CIM for a second Task.Delay(1000).Wait(); } System.Diagnostics.Debug.WriteLine(string.Format("RunCancelableProgress: Canceled {0}", cps.Progressor.CancellationToken.IsCancellationRequested)); }, cps.Progressor); }
protected async override void OnClick() { CIMFeatureTemplate cimFT; List <CIMFeatureTemplate> list = new List <CIMFeatureTemplate>(); var ps = new ArcGIS.Desktop.Framework.Threading.Tasks.CancelableProgressorSource("Importing feature templates", "Canceled"); await QueuedTask.Run(() => { InitializeLibrarian(); // browse file dialog var ofd = new OpenFileDialog { Filter = "xml files (*.xml)|*.xml", RestoreDirectory = true, Multiselect = false }; if (ofd.ShowDialog() == true) { var doc = XDocument.Load(ofd.FileName); var elements = from el in doc.Descendants("Children").Descendants("Children").Where(node => node.Elements("Name").Any()) select new { eName = el.Element("Name").Value, eSIC = el.Element("SIC").Value }; foreach (var item in elements) { var s = _librarian.MakeSymbol("2525C", item.eSIC); cimFT = new CIMFeatureTemplate(); switch (s.GeometryType) { case JointMilitarySymbologyLibrary.GeometryType.POINT: cimFT.Tags = "Point"; cimFT.ToolProgID = "2a8b3331-5238-4025-972e-452a69535b06"; break; case JointMilitarySymbologyLibrary.GeometryType.LINE: // JointMilitarySymbologyLibrary only works with points cimFT.Tags = "Line"; break; case JointMilitarySymbologyLibrary.GeometryType.AREA: // JointMilitarySymbologyLibrary only work with points cimFT.Tags = "Polygon"; break; default: break; } cimFT.Name = item.eName; cimFT.DefaultValues = new Dictionary <string, object> { { "identity", s.SIDC.PartAString.Substring(2, 2) }, { "context", s.SIDC.PartAString.Substring(6, 1) }, { "symbolset", s.SIDC.PartAString.Substring(4, 2) }, { "entity", s.SIDC.PartBString.Substring(0, 6) } }; list.Add(cimFT); } } }); if (MapView.Active != null && list.Any()) { // get toc highlighted layers var selLayers = MapView.Active.GetSelectedLayers(); // retrieve the first one Layer layer = selLayers.FirstOrDefault(); if (layer != null) { // find the CIM and serialize it await QueuedTask.Run(() => { if (layer is FeatureLayer) { AddMatchingSymbolSetsToLayer(layer, list); } else if (layer is GroupLayer) { var gl = layer as GroupLayer; var layerList = gl.GetLayersAsFlattenedList(); foreach (var layerItem in layerList) { if (layerItem is FeatureLayer) { AddMatchingSymbolSetsToLayer(layerItem, list); } } } }, ps.Progressor); } } }
protected async override void OnClick() { CIMFeatureTemplate cimFT; List<CIMFeatureTemplate> list = new List<CIMFeatureTemplate>(); var ps = new ArcGIS.Desktop.Framework.Threading.Tasks.CancelableProgressorSource("Importing feature templates", "Canceled"); await QueuedTask.Run(() => { InitializeLibrarian(); // browse file dialog var ofd = new OpenFileDialog { Filter = "xml files (*.xml)|*.xml", RestoreDirectory = true, Multiselect = false }; if (ofd.ShowDialog() == true) { var doc = XDocument.Load(ofd.FileName); var elements = from el in doc.Descendants("Children").Descendants("Children").Where(node => node.Elements("Name").Any()) select new { eName = el.Element("Name").Value, eSIC = el.Element("SIC").Value }; foreach (var item in elements) { var s = _librarian.MakeSymbol("2525C", item.eSIC); cimFT = new CIMFeatureTemplate(); switch(s.GeometryType) { case JointMilitarySymbologyLibrary.GeometryType.POINT: cimFT.Tags = "Point"; cimFT.ToolProgID = "2a8b3331-5238-4025-972e-452a69535b06"; break; case JointMilitarySymbologyLibrary.GeometryType.LINE: // JointMilitarySymbologyLibrary only works with points cimFT.Tags = "Line"; break; case JointMilitarySymbologyLibrary.GeometryType.AREA: // JointMilitarySymbologyLibrary only work with points cimFT.Tags = "Polygon"; break; default: break; } cimFT.Name = item.eName; cimFT.DefaultValues = new Dictionary<string, object> { {"identity",s.SIDC.PartAString.Substring(2,2)}, {"context", s.SIDC.PartAString.Substring(6,1)}, {"symbolset", s.SIDC.PartAString.Substring(4,2)}, {"entity", s.SIDC.PartBString.Substring(0,6)} }; list.Add(cimFT); } } }); if (MapView.Active != null && list.Any()) { // get toc highlighted layers var selLayers = MapView.Active.GetSelectedLayers(); // retrieve the first one Layer layer = selLayers.FirstOrDefault(); if (layer != null) { // find the CIM and serialize it await QueuedTask.Run(() => { if (layer is FeatureLayer) { AddMatchingSymbolSetsToLayer(layer, list); } else if (layer is GroupLayer) { var gl = layer as GroupLayer; var layerList = gl.GetLayersAsFlattenedList(); foreach (var layerItem in layerList) { if (layerItem is FeatureLayer) { AddMatchingSymbolSetsToLayer(layerItem, list); } } } }, ps.Progressor); } } }