Мониторинг, когда файл используется

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

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; }
}

PS я знаю это некрасиво:D

Другие вопросы по тегам