2016-02-18 2 views
0

Я создал метод, который записывает txt-файл на флэш-накопитель USB. В данный момент я запускаю этот метод через RelayCommand, привязанный к кнопке. Но я хочу начать этот метод в evertime, когда флэш-накопитель usb автоматически подключен. Чтобы этот метод автоматически записывал txt-файл на флеш-накопитель, который подключен. (Метод GetDrives отвечает мне на букву первого накопителя, который подключен). Кто-нибудь знает, как это понимать?Метод начала, когда USB был подключен к [C#]

public void WriteFileOnFDrive() 
     { 
      var firstDrive = GetDrives().FirstOrDefault(); 
      if (!string.IsNullOrEmpty(firstDrive)) 
      { 
       string myText = "TestText"; 
       string path = firstDrive + @"SomeText.txt"; 
       if (File.Exists(path)) 
       { 
        Console.WriteLine("SomeText already exists!"); 
       } 
       else 
       { 
        System.IO.File.WriteAllText(path, myText); 
        File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.Hidden | FileAttributes.ReadOnly | FileAttributes.System); 
       } 
      } 
     } 

Edit:.. Я не нужны диски, которые уже подключены в мне нужно, чтобы вызвать мой метод, когда новый флэш-накопитель получает подключен

+1

Возможный дубликат [Как обнаружить USB-накопитель подключен?] (Http://stackoverflow.com/questions/6003822/how-to-detect-a-usb-drive-has-been-plugged- in) – Jay

+0

Я думаю, что этот ответ показывает, как найти диски USB, которые уже подключены. Но я хочу начать свой метод, когда диск подключится. – L4c0573

+0

Ответ здесь: http://stackoverflow.com/questions/1783657/get-notification-when-a-new-drive-is-connected-via-usb-or-other-means-c? rq = 1 – petric

ответ

2

Вы можете использовать ManagementEventWatcher для этого.
Существует статья о Microsoft под названием How to detect a removable disk, которая объясняет это красиво. Я использую код из статьи почти как есть в производственном коде, и он работает как на Win7, Win8, так и на Win10.

+0

Спасибо, это именно то, что я искал! – L4c0573