修复System.ArgumentException异常:优化Setting.cs中RealTimeImage属性的实现,添加线程安全保护、状态检查和正确的资源管理

This commit is contained in:
zqm
2025-11-06 10:57:51 +08:00
parent aeed8f65dc
commit ca98f7e257

View File

@@ -113,8 +113,44 @@ namespace JoyD.Windows.CS
}
set
{
mRealTimeImage?.Dispose();
// 线程安全检查 - 确保在UI线程上执行
if (this.InvokeRequired)
{
try
{
this.BeginInvoke(new Action<Image>((img) => RealTimeImage = img), value);
}
catch (ObjectDisposedException)
{
// 控件已释放,释放传入的图像
value?.Dispose();
}
return;
}
// 防止重复设置相同的图像
if (mRealTimeImage == value)
return;
// 检查是否在有效状态下操作
if (this.IsDisposed || this.Disposing || pictureBoxTemperatureDisplay == null || pictureBoxTemperatureDisplay.IsDisposed)
{
// 如果窗口已关闭或正在关闭,释放传入的图像
value?.Dispose();
return;
}
// 释放旧图像
if (mRealTimeImage != null && mRealTimeImage != value)
{
try { mRealTimeImage.Dispose(); } catch { }
}
// 设置新图像
mRealTimeImage = value;
// 立即更新UI
UpdatePictureBoxImage();
}
}
}