2016-08-18 58 views
1

目前,我使用LibUSBDotNet来检测何时插入USB。然而,这需要几秒钟安装,所以目前,我运行这段代码:在Linux的Mono上的USB Mount上

private void OnDeviceNotifyEvent(object sender, DeviceNotifyEventArgs e) 
{ 
    //Log.WriteDiagnostic(e.ToString()); 
    Thread thread = new Thread(USBThreadStart); 
    thread.Start(); 
} 

private void USBThreadStart() 
{ 
    Thread.Sleep(5000); 
    DriveInfo[] drives = DriveInfo.GetDrives(); 
    foreach (DriveInfo drive in drives) 
     if (drive.Name.Contains("/SomeUsbName")) 
      Log.WriteDiagnostic("Usb Found.");    
} 

在此,我启动等待(足够多的安装设备更多)5秒的线程,那么通过所有驱动器循环访问具有给定名称的驱动器(我们在客户的USB记忆棒上专有名称)。我这样做的原因是因为DriveInfo.GetDrives()将所有USB记忆棒作为固定类型返回,而不是可移动类型。

这有效,但它肯定不觉得最好的方式去做。有没有更好的方法,使用Linux上的Mono C#来检测何时安装USB棒?

回答

0

我不知道这样做的图书馆(我猜你试过谷歌)。我可以提供你实施这样的图书馆。你应该看看here。你可以用这个概念来实现这个库。例如,编写一个服务,例如通过管道接收通知。