C#多页面共用一个实例

C#多页面共用一个实例

案例:

  • C#与硬件设备交互,交互类里面有打开设备数据接发等1操作,在其他许多地方需要调用该设备
  • 兼顾各代码的耦合度
    采用单例模式,eg.CAN设备:
		private CANClass()
		{

		}

        /// <summary>
        /// 获取CAN实例
        /// </summary>
        /// <param name="device_index"></param>
        /// <param name="baudRate"></param>
        /// <param name="channel"></param>
        /// <returns></returns>
        public static CANClass GetCanInstance(int device_index = 0, uint baudRate = (uint)BaudRateDataItems.BaudRate500kbps, int channel = 0)
        {
            if (!canInstances.ContainsKey(device_index))
            {
                CANClass instance = new CANClass(baudRate, channel);
                canInstances.Add(device_index, instance);
                // 配置当前实例的一些参数
            }
            return canInstances[device_index];
        }

其他地方调用:

var can = CANClass.GetCanInstance();

单例模式:用于确保一个类只有一个实例,并提供一个全局访问点来访问该实例
根据device_index 进行唯一标识,如果想连接多个设备时,只需要GetCanInstance不同的形参,同时保证同一形参前提下,项目内获取到的CANClass都是一样的

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-04 17:48:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-04 17:48:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-04 17:48:05       82 阅读
  4. Python语言-面向对象

    2024-04-04 17:48:05       91 阅读

热门阅读

  1. 【LeetCode】第2题:两数相加(AHK v2)

    2024-04-04 17:48:05       33 阅读
  2. EFCore通用仓储类

    2024-04-04 17:48:05       35 阅读
  3. AspectJ 的 5 大通知类型

    2024-04-04 17:48:05       32 阅读
  4. 详细介绍如何利用 A star(A*)算法解决8数码问题

    2024-04-04 17:48:05       35 阅读
  5. python实现UDP服务器

    2024-04-04 17:48:05       43 阅读
  6. Redis的基础命令集详解

    2024-04-04 17:48:05       41 阅读
  7. Redis Stack十部曲之二:理解Redis Stack中的数据类型

    2024-04-04 17:48:05       34 阅读
  8. 【实时监控主机与某个IP的网络连接情况】

    2024-04-04 17:48:05       41 阅读
  9. 在Go语言中如何调试

    2024-04-04 17:48:05       42 阅读
  10. C语言——字符函数和字符串函数(下)

    2024-04-04 17:48:05       36 阅读
  11. springboot实现七牛云的文件上传下载

    2024-04-04 17:48:05       30 阅读