title: Choice of .Net technology for multiple access to one single USB-device
body: <p>I have an application which currently have three modules/layers; a GUI, a layer of logic and calculations and a layer that provides access to the USB-device and it's data (below that there is the USB-driver but that isn't part of our source code). The USB-device is a resource that can be used by only one software instance at a time.</p>
  
  <p>This have been working fine but now we want to enable the user to run multiple instances of the application towards the same USB-device. So now we will have to share the lowest layer (access to USB-device) between software instances (as the USB-driver can't be shared). You can see it as I want to create a system wide singleton of the lowest layer...</p>
  
  <p>What .Net technologies or patterns are best suited as a solution to this problem?</p>
  
  <p>We are using .Net 4, WPF and C#.</p>
  
  <p>EDIT: The communication with the USB-device requires a connection procedure that includes calibration of the hardware and that actually takes some time (seconds). So connecting and disconnecting for each call will not be an option. For performance issues I will need to connect once and then keep that connection open.</p>