diff --git a/doc/requirement/todo_features.md b/doc/requirement/todo_features.md
index 9fa7ca8..9d953dc 100644
--- a/doc/requirement/todo_features.md
+++ b/doc/requirement/todo_features.md
@@ -5,6 +5,8 @@
### [2025/08/29]
1. [ ](BUG)路径导出,只有一条路径时,导出按钮不能点击;导出的内容有时不完整,只导出一个包含起点、一个路径点、终点的不存在的路径。
+2. [ ](性能优化)垂直扫描处理器性能问题:COM API几何提取效率极低,23个候选项需要5715ms,复杂几何体比简单几何体效率低4倍,需要优化批量处理和并行机制。
+3. [ ](稳定性)修复并行任务未观察异常导致程序崩溃:AggregateException错误表明Task异常处理不当,需要加强并行处理的异常处理和Task生命周期管理。
### [2025/08/28]
diff --git a/src/Core/UIStateManager.cs b/src/Core/UIStateManager.cs
index 70d238e..1ecf377 100644
--- a/src/Core/UIStateManager.cs
+++ b/src/Core/UIStateManager.cs
@@ -28,6 +28,12 @@ namespace NavisworksTransport.Core
private volatile bool _isProcessing = false;
private volatile bool _isDisposed = false;
+ ///
+ /// UI操作默认超时时间(毫秒)- 60秒
+ /// 设置较长时间以应对程序性能异常导致的UI线程阻塞
+ ///
+ private const int DEFAULT_UI_TIMEOUT = 60000;
+
///
/// 获取UIStateManager的单例实例
///
@@ -150,7 +156,7 @@ namespace NavisworksTransport.Core
/// 要执行的UI操作
/// 超时时间(毫秒),默认5000ms
/// 操作结果
- public async Task ExecuteUIUpdateAsync(Func operation, int timeout = 5000)
+ public async Task ExecuteUIUpdateAsync(Func operation, int timeout = DEFAULT_UI_TIMEOUT)
{
if (_isDisposed)
{
@@ -244,7 +250,8 @@ namespace NavisworksTransport.Core
}
finally
{
- cancellationToken.Dispose();
+ // 延迟释放,给异步操作清理时间,避免"CancellationTokenSource 已释放"异常
+ _ = Task.Delay(100).ContinueWith(_ => cancellationToken.Dispose());
}
}
@@ -253,7 +260,7 @@ namespace NavisworksTransport.Core
///
/// 要执行的UI操作
/// 超时时间(毫秒),默认5000ms
- public async Task ExecuteUIUpdateAsync(Action operation, int timeout = 5000)
+ public async Task ExecuteUIUpdateAsync(Action operation, int timeout = DEFAULT_UI_TIMEOUT)
{
await ExecuteUIUpdateAsync