From 2cf6fdf9e642c00d0631e1ff811ab5970346fb2e Mon Sep 17 00:00:00 2001 From: ww-rm Date: Sat, 1 Mar 2025 21:32:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=BA=BF=E7=A8=8B=E5=AE=89?= =?UTF-8?q?=E5=85=A8=E6=B5=85=E6=8B=B7=E8=B4=9D=E8=AE=BF=E9=97=AE=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SpineViewer/src/SpineListView.cs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/SpineViewer/src/SpineListView.cs b/SpineViewer/src/SpineListView.cs index 39c6bad..01bf3d8 100644 --- a/SpineViewer/src/SpineListView.cs +++ b/SpineViewer/src/SpineListView.cs @@ -20,11 +20,22 @@ namespace SpineViewer public PropertyGrid? PropertyGrid { get; set; } /// - /// Spine 列表 + /// Spine 列表浅拷贝 /// + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [Browsable(false)] - public ReadOnlyCollection Spines { get => spines.AsReadOnly(); } + public Spine.Spine[] Spines + { + get + { + dataMutex.WaitOne(); + var shallowCopy = spines.ToArray(); + dataMutex.ReleaseMutex(); + return shallowCopy; + } + } private readonly List spines = []; + private readonly Mutex dataMutex = new(); public SpineListView() { @@ -312,7 +323,7 @@ namespace SpineViewer if (listView.Items.Count <= 0) return; - if (MessageBox.Show($"确认移除所有 {listView.SelectedIndices.Count} 项吗?", "操作确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) + if (MessageBox.Show($"确认移除所有 {listView.Items.Count} 项吗?", "操作确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { spines.Clear(); listView.Items.Clear();