Я использую FileSystemWatcher
, чтобы посмотреть папку для новых файлов.Когда новый файл копируется в него, он работал хорошо для меня.Однако, если я копирую в 5 файлах (это будет максимум, который я когда-либо делал бы сразу), он срабатывает, но у FileSystemEventArgs
есть только один файл.
Мне нужно, чтобы передать все новые файлы.
Есть ли способ заставить его обрабатывать все файлы, а затем я перебираю их?
Вот мой код:
static void Main(string[] args)
{
FileSystemWatcher fsw = new FileSystemWatcher(FolderToMonitor)
{
InternalBufferSize = 10000
};
fsw.Created += new FileSystemEventHandler(fsw_Created);
bool monitor = true;
Show("Waiting...", ConsoleColor.Green);
while (monitor)
{
fsw.WaitForChanged(WatcherChangeTypes.All, 2000); // Abort after 2 seconds to see if there has been a user keypress.
if (Console.KeyAvailable)
{
monitor = false;
}
}
Show("User has quit the process...", ConsoleColor.Yellow);
Console.ReadKey();
}`
static void fsw_Created(object sender, FileSystemEventArgs args)
{
Show("New File Detected!", ConsoleColor.Green);
Show("New file name: " + args.Name, ConsoleColor.Green);
bool fileIsReadOnly = true;
while (fileIsReadOnly)
{
Thread.Sleep(5000);
fileIsReadOnly = IsFileReadonly(args.FullPath);
if (fileIsReadOnly)
Show("File is readonly... waiting for it to free up...", ConsoleColor.Yellow);
}
Show("File is not readonly... Continuing..", ConsoleColor.Yellow);
HandleFile(args);
}