On USB Mount in Mono on Linux

本文关键字:on Linux Mono in USB Mount On | 更新日期: 2023-09-27 18:02:53

目前,我正在使用LibUSBDotNet来检测何时插入USB。但是,它需要几秒钟才能挂载,所以目前,我运行以下代码:

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棒是什么时候挂载的?

On USB Mount in Mono on Linux

我不知道有哪个库能做到这一点(我猜你试过谷歌)。我可以提供你实现这样的库。你应该看看这里。您可以使用这个概念来实现库。例如,编写一个服务,从中通过管道接收通知,例如