From ede65c9c983e3ef22c18e7ddb0993a37355677c8 Mon Sep 17 00:00:00 2001 From: ww-rm Date: Mon, 3 Mar 2025 21:39:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0dispose=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SpineViewer/Controls/SpineListView.cs | 29 ++++++++++++++++++--------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/SpineViewer/Controls/SpineListView.cs b/SpineViewer/Controls/SpineListView.cs index 34f869f..513605a 100644 --- a/SpineViewer/Controls/SpineListView.cs +++ b/SpineViewer/Controls/SpineListView.cs @@ -112,7 +112,6 @@ namespace SpineViewer.Controls var skelPath = skelPaths[i]; - worker.ReportProgress((int)((i + 1) * 100.0) / totalCount, $"正在处理 {i + 1}/{totalCount}"); try { var spine = Spine.Spine.New(version, skelPath); @@ -126,6 +125,8 @@ namespace SpineViewer.Controls Program.Logger.Error("Failed to load {}", skelPath); error++; } + + worker.ReportProgress((int)((i + 1) * 100.0) / totalCount, $"已处理 {i + 1}/{totalCount}"); } if (error > 0) @@ -271,7 +272,11 @@ namespace SpineViewer.Controls foreach (var i in listView.SelectedIndices.Cast().OrderByDescending(x => x)) { - lock (Spines) { spines.RemoveAt(i); } + lock (Spines) + { + spines[i].Dispose(); + spines.RemoveAt(i); + } listView.Items.RemoveAt(i); } } @@ -311,14 +316,18 @@ namespace SpineViewer.Controls if (listView.Items.Count <= 0) return; - if (MessageBox.Show($"确认移除所有 {listView.Items.Count} 项吗?", "操作确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) - { - lock (Spines) { spines.Clear(); } - listView.Items.Clear(); - if (PropertyGrid is not null) - PropertyGrid.SelectedObject = null; - } - } + if (MessageBox.Show($"确认移除所有 {listView.Items.Count} 项吗?", "操作确认", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK) + return; + lock (Spines) + { + foreach (var spine in spines) + spine.Dispose(); + spines.Clear(); + } + listView.Items.Clear(); + if (PropertyGrid is not null) + PropertyGrid.SelectedObject = null; + } } }