选择.net技术,实现对单个usb设备的多重访问
本文关键字:访问 usb 单个 技术 net 实现 选择 | 更新日期: 2023-09-27 18:11:26
我有一个应用程序,目前有三个模块/层;一个GUI,一个逻辑和计算层,一个提供访问usb设备及其数据的层(下面是usb驱动程序,但这不是我们源代码的一部分)。usb设备是一种资源,一次只能由一个软件实例使用。
这一直工作良好,但现在我们想让用户对同一个usb设备运行应用程序的多个实例。所以现在我们必须在软件实例之间共享最低层(访问usb设备)(因为usb驱动程序不能共享)。你可以看到,我想创建一个最低层的系统范围单例…
什么。net技术或模式最适合作为这个问题的解决方案?
我们正在使用。net 4, WPF和c#。
编辑:与usb设备的通信需要一个连接过程,包括硬件校准,这实际上需要一些时间(秒)。因此,连接和断开每个呼叫将不是一个选项。对于性能问题,我需要连接一次,然后保持该连接打开。
您需要考虑使用Mutex
。控制对代码的USB部分的访问,以便只有一个互斥锁的持有者可以使用它。
使用一个直接访问USB设备的进程-这个进程可以是一个Windows服务。所有应用程序都与这个单一进程对话,从不直接与USB设备对话…
对于与其他进程的通信,您可以使用任何IPC技术,尽管如果所有进程都在同一台机器/系统上,那么我建议使用Mutex
和共享内存的组合(通过MemoryMappedFile
),因为这是最快的IPC机制…
如果性能不是一个大问题,那么使用WCF,因为它给你一个很好的接口,如果需要的话,可以允许通过局域网访问…