Мониторинг, когда файл используется
Мне нужно отслеживать, когда исполняется файл (*.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