Отслеживайте, когда файл используется

Мне нужно следить за выполнением файла (*.wav).
Я знаю о классе filesystemwatcher. Однако уведомляет ли этот класс, когда файл используется? Я также наткнулся на Монитор при запуске exe. Хотя я понимаю, что это связано с exe, есть ли способ получить уведомление о том, что wav-файл был выполнен?


person Eminem    schedule 30.01.2017    source источник
comment
Вы можете отслеживать каждый раз, когда выполняется медиаплеер. Потому что документ не может быть записан в файле .docx. Медиаплеер будет выполнять формат .wav. Я думаю, что это может удовлетворить ваше требование. Если нет, прокомментируйте здесь и сузьте свою проблему.   -  person M. Adeel Khalid    schedule 30.01.2017


Ответы (1)


Нет, вы не можете получить событие, когда открыты неисполняемые файлы, такие как mp3, wav, txt и т. д.
Но на самом деле вы можете проверить, открыт ли файл, напишите сейчас...

static void Main(string[] args)
{
    using (BackgroundWorker bw = new BackgroundWorker())
    {
        bw.DoWork += Bw_DoWork;
        bw.RunWorkerAsync();
    }
    Console.WriteLine("Press Q to exit");
    while (Console.ReadKey(true).Key!=ConsoleKey.Q){}
}

private static bool[] opened;

private static void Bw_DoWork(object sender, DoWorkEventArgs e)
{
    var files = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "*.mp3");
    opened = new bool[files.Length];

    while (true)
        for (int i = 0; i < files.Length; i++)
            try
            {
                using (var fs = File.Open(files[i], FileMode.Open, FileAccess.Read, FileShare.None))
                    opened[i] = false;
            }
            catch{ opened[i] = true; }
}

P.S. Я знаю, что это некрасиво :D

person Sergio    schedule 30.01.2017
comment
Эй, это может быть некрасиво, но это может быть частью решения - person Eminem; 30.01.2017