laptop and a wrench

漏洞

Layer.SetExpanded(true) creates duplicate group layer items in the Contents pane in ArcGIS Pro 2.8.x but works fine in ArcGIS Pro 2.7.x.

上次发布: October 13, 2021 ArcGIS Pro SDK for .NET
漏洞 ID 编号 BUG-000143582
已提交October 11, 2021
上次修改时间June 19, 2025
适用范围ArcGIS Pro SDK for .NET
找到的版本2.8
操作系统Windows OS
操作系统版本10.0 64 Bit
状态Will Not Be Addressed

附加信息

Here are a few changes that the submitter can make to remove potential deadlocks and the System.Threading.Tasks.Task. I do not recommend the approach being used in the repro. I cannot reproduce it with the code consolidated/refactored as below. These changes/recommendations to the code are all explained here: https://github.com/esri/arcgis-pro-sdk/wiki/ProConcepts-Asynchronous-Programming-in-ArcGIS-Pro //Button1 implementation protected async override void OnClick() { var loops = 20; //we use a single queuedtask that is _awaited_ not "Wait" //Class2_Add_Batch_Magic is implemented with synchronous //methods var N = await QueuedTask.Run(() => { Class2_Add_Batch_Magic class2_Add_Batch_Magic = new Class2_Add_Batch_Magic(); return class2_Add_Batch_Magic.GO(loops); }); //Show modal UI outside the context of the QTR MessageBox.Show(String.Format("Complete {0} Loops, Duplicates = {1}", loops, N)); } //Note that all methods are converted to synchronous internal class Class2_Add_Batch_Magic { //The use of System.Threading.Tasks.Task is removed public int GO(int loops = 20) { return Run(loops); } private int Run(int loops) { return TestLoop(loops); } //Must be called within the context of a QTR or a //CalledOnWrongThreadException will be thrown from //LayerFactory.Instance.CreateGroupLayer... private int TestLoop(int loops) { int N = 0; for (int i = 0; i < loops; i++) { N += Nest1(i); } return N; //MessageBox.Show(String.Format("Complete {0} Loops, Duplicates = {1}", loops, N)); } private int Nest1(int index) { int N = 0; N = Nest2(index); return N; } private int Nest2(int index) { int N = 0; N = Make_Both(index); return N; } private int Make_Both(int index) { var pMagic = MakeGroup("Magic_" + index, null); var pBatch = MakeGroup("Batch_" + index, pMagic); Layer_Visible(pBatch, false); Layer_Expands(pBatch, false); return pMagic.Layers.Count - 1; } private GroupLayer MakeGroup(string Name, GroupLayer Parent) { ILayerContainerEdit Group = Parent; if (Group == null) { if (MapView.Active == null) return null; else Group = MapView.Active?.Map; } Parent = LayerFactory.Instance.CreateGroupLayer(Group, 0, "A_" + Name + "_Z"); Parent.SetName(Name); Layer_Expands(Parent, true); Layer_Visible(Parent, true); return Parent; } private void Layer_Expands(Layer pLayer, bool Value) { pLayer.SetExpanded(Value); } private void Layer_Visible(Layer pLayer, bool Value) { pLayer.SetVisibility(Value); } }

重现步骤

漏洞 ID: BUG-000143582

软件:

  • ArcGIS Pro SDK for .NET

当漏洞状态发生变化时获得通知

下载 Esri 支持应用程序

发现关于本主题的更多内容

获取来自 ArcGIS 专家的帮助

联系技术支持部门

下载 Esri 支持应用程序

转至下载选项