修复System.ArgumentException异常:优化Setting.cs中RealTimeImage属性的实现,添加线程安全保护、状态检查和正确的资源管理
This commit is contained in:
@@ -113,8 +113,44 @@ namespace JoyD.Windows.CS
|
|||||||
}
|
}
|
||||||
set
|
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;
|
mRealTimeImage = value;
|
||||||
|
|
||||||
|
// 立即更新UI
|
||||||
|
UpdatePictureBoxImage();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user