我有一个应用程序,它目前有三个模块/层;一个GUI,一个逻辑和计算层,以及一个提供对USB设备及其数据的访问的层(下面是USB驱动程序,但这不是我们源代码的一部分)。USB设备是一次只能由一个软件实例使用的资源。
这一直运行得很好,但现在我们想让用户在同一个USB设备上运行应用程序的多个实例。因此,现在我们必须在软件实例之间共享最低层(访问USB-device) (因为不能共享USB-driver )。你可以看到我想要创建一个系统范围的最低层的单例...
哪些.Net技术或模式最适合作为此问题的解决方案?
我们使用的是.Net 4、WPF和C#。
编辑:与USB设备的通信需要包括硬件校准在内的连接过程,这实际上需要一些时间(秒)。因此,连接和断开每个呼叫将不是一个选项。对于性能问题,我需要连接一次,然后保持该连接打开。
发布于 2011-10-16 04:16:47
您需要了解如何使用Mutex。控制对代码的USB部分的访问,以便只有一个互斥锁的持有者可以使用它。
发布于 2011-10-16 13:49:09
只使用一个直接访问USB设备的进程-例如,此进程可以是Windows服务。所有应用程序都与这一单一进程通信,而不是直接与USB设备通信...
为了与其他进程通信,您可以使用任何进程间通信技术,但是如果所有进程都在同一台机器/系统上,那么我建议您结合使用Mutex和shared memory (通过MemoryMappedFile),因为这是最快的进程间通信机制……
如果性能不是一个大问题,那么使用WCF,因为它为您提供了一个很好的接口,并且如果需要的话,可以允许通过LAN访问。
https://stackoverflow.com/questions/7780219
复制相似问题