修复设计模式下控件仍在连接设备并更新图像的问题,添加了设计模式检查
This commit is contained in:
@@ -158,6 +158,7 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// </summary>
|
||||
public void StartCamera()
|
||||
{
|
||||
if (DesignMode) return;
|
||||
try
|
||||
{
|
||||
// 只有在没有接收图像时才启动
|
||||
@@ -244,6 +245,7 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// </summary>
|
||||
private void StartReceiveImage()
|
||||
{
|
||||
if (DesignMode) return;
|
||||
try
|
||||
{
|
||||
if (!_isReceivingImage && _deviceManager.ConnectionStatus == ConnectionStatus.Connected)
|
||||
@@ -265,6 +267,7 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// </summary>
|
||||
public void StopCamera()
|
||||
{
|
||||
if (DesignMode) return;
|
||||
try
|
||||
{
|
||||
if (_isReceivingImage)
|
||||
@@ -284,6 +287,7 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// </summary>
|
||||
private void DeviceManager_ImageReceived(object sender, ImageReceivedEventArgs e)
|
||||
{
|
||||
if (DesignMode) return;
|
||||
Image image = null;
|
||||
try
|
||||
{
|
||||
@@ -449,6 +453,7 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// </summary>
|
||||
private void UpdateImageOnUI(Image image)
|
||||
{
|
||||
if (DesignMode) return;
|
||||
// 线程安全检查 - 确保在UI线程上执行
|
||||
if (this.InvokeRequired)
|
||||
{
|
||||
@@ -606,6 +611,7 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// </summary>
|
||||
private void DeviceManager_ConnectionStatusChanged(object sender, ConnectionStatusChangedEventArgs e)
|
||||
{
|
||||
if (DesignMode) return;
|
||||
// 参数验证
|
||||
if (e == null)
|
||||
{
|
||||
@@ -680,6 +686,7 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// </summary>
|
||||
private void HandleConnectionStatusChanged(ConnectionStatusChangedEventArgs e)
|
||||
{
|
||||
if (DesignMode) return;
|
||||
try
|
||||
{
|
||||
// 确保在UI线程上更新UI状态
|
||||
@@ -787,6 +794,7 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// <param name="isConnected">是否已连接</param>
|
||||
private void UpdateUIState(bool isConnected)
|
||||
{
|
||||
if (DesignMode) return;
|
||||
try
|
||||
{
|
||||
// 根据连接状态更新图像框状态
|
||||
@@ -830,6 +838,7 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// </summary>
|
||||
private void DeviceManager_ConnectionException(object sender, ConnectionExceptionEventArgs e)
|
||||
{
|
||||
if (DesignMode) return;
|
||||
// 参数验证
|
||||
if (e == null)
|
||||
{
|
||||
@@ -924,6 +933,7 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// </summary>
|
||||
private void ShowError(string message)
|
||||
{
|
||||
if (DesignMode) return;
|
||||
Console.WriteLine(message);
|
||||
|
||||
// 可以根据需要添加UI上的错误显示
|
||||
@@ -968,6 +978,7 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// </summary>
|
||||
private void ErrorDisplayTimer_Tick(object sender, EventArgs e)
|
||||
{
|
||||
if (DesignMode) return;
|
||||
_errorDisplayTimer.Stop();
|
||||
// 清除错误显示,恢复到等待图像状态
|
||||
|
||||
@@ -1007,6 +1018,7 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// </summary>
|
||||
private void ContextMenuStrip1_Opening(object sender, System.ComponentModel.CancelEventArgs e)
|
||||
{
|
||||
if (DesignMode) return;
|
||||
try
|
||||
{
|
||||
// 根据当前图像模式控制色彩模式菜单的可见性
|
||||
|
||||
@@ -151,7 +151,7 @@ namespace JoyD.Windows.CS.Toprie
|
||||
public class DeviceManager : IDisposable
|
||||
{
|
||||
// 设计模式标志,用于在设计模式下跳过实际的设备连接和初始化
|
||||
public static bool IsDesignMode { get; set; } = false;
|
||||
public static bool IsDesignMode { get; set; } = true;
|
||||
|
||||
// 项目路径,用于数据文件的存取
|
||||
private string _projectPath = "";
|
||||
@@ -1785,6 +1785,15 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// </summary>
|
||||
private void ReceiveImageDataWithHttpWebRequest()
|
||||
{
|
||||
// 在设计模式下,跳过实际的图像接收
|
||||
if (IsDesignMode)
|
||||
{
|
||||
Log("设计模式下跳过实际的图像接收");
|
||||
// 设置为不接收状态,避免持续运行
|
||||
_isReceivingImages = false;
|
||||
return;
|
||||
}
|
||||
|
||||
Console.WriteLine($"图像接收线程启动: 使用HTTP请求获取图像数据");
|
||||
try
|
||||
{
|
||||
@@ -2670,6 +2679,13 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// </summary>
|
||||
private void ReceiveImageThread()
|
||||
{
|
||||
// 在设计模式下,跳过实际的图像接收
|
||||
if (IsDesignMode)
|
||||
{
|
||||
Log("设计模式下跳过实际的图像接收");
|
||||
return;
|
||||
}
|
||||
|
||||
Console.WriteLine("警告: 已弃用的图像接收方式,使用HTTP方式替代");
|
||||
try
|
||||
{
|
||||
@@ -3576,6 +3592,13 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// <param name="state">定时器状态</param>
|
||||
private void ReconnectCallback(object state)
|
||||
{
|
||||
// 在设计模式下,跳过实际的重连操作
|
||||
if (IsDesignMode)
|
||||
{
|
||||
Log("设计模式下跳过实际的重连操作");
|
||||
return;
|
||||
}
|
||||
|
||||
Log($"[{DateTime.Now:HH:mm:ss.fff}] [线程:{Thread.CurrentThread.ManagedThreadId}] ReconnectCallback() - 开始执行");
|
||||
|
||||
// 使用Interlocked.Exchange实现原子操作检查,防止重入
|
||||
@@ -3993,6 +4016,13 @@ namespace JoyD.Windows.CS.Toprie
|
||||
/// <param name="state">定时器状态</param>
|
||||
private void HeartbeatCallback(object state)
|
||||
{
|
||||
// 在设计模式下,跳过实际的心跳检测
|
||||
if (IsDesignMode)
|
||||
{
|
||||
Log("设计模式下跳过实际的心跳检测");
|
||||
return;
|
||||
}
|
||||
|
||||
Log($"[{DateTime.Now:HH:mm:ss.fff}] [线程:{Thread.CurrentThread.ManagedThreadId}] HeartbeatCallback() - 开始执行");
|
||||
|
||||
// 检查对象是否已释放
|
||||
|
||||
Reference in New Issue
Block a user