Я создал простую службу FileSystemWatcher, которая работает на моем компьютере:FileSystemWatcher алгоритм сортировки
public static void Run()
{
var watcher = new FileSystemWatcher
{
Path = @"C:\Users\XXX\Google Drive",
NotifyFilter = NotifyFilters.LastAccess
| NotifyFilters.LastWrite
| NotifyFilters.FileName
| NotifyFilters.DirectoryName,
Filter = "*.*",
};
watcher.Created += OnChanged;
watcher.EnableRaisingEvents = true;
}
private static void OnChanged(object source, FileSystemEventArgs e)
{
FooPrintClass.SendToPrinter(e.FullPath);
}
Как вы видите, я смотрю в папку Google Drive. Эта папка также синхронизируется на моем сервере. Время от времени система на моем сервере будет создать 2 пары файлов с тем же именем, но с diffrent типа:
(Foo.pdf, Foo.txt)
Иногда система будет создавать более 50 из этих пар, и все они будут синхронизироваться с моим Google Дисковая папка.
Пока все хорошо, теперь к моей проблеме: Служба FileSystemWatcher работает так, как ожидалось, но не обрабатывает их ни в какой сортировке. Мне нужно мое обслуживание, чтобы фактически обрабатывать каждую пару за раз.
Expected Result:
Foo.pdf, Foo.txt
Bar.pdf, Foo.txt
Actual Result:
Bar.txt, Foo.pdf
Foo.txt, Bar.pdf
Как и ожидалось, мне нужно сначала напечатать пары в порядке. Существует множество способов реализации решения «очередь», но в моем случае я не знаю, сколько файлов будет. Поэтому я не знаю общее количество файлов, и поэтому сложнее построить алгоритм сортировки очередей и сортировки.
Любые советы?
Место в массиве (или подходящей структуре данных), сортировка ....................... –
FileSystemWatcher обрабатывает по одному файлу за раз. И как описано, я использую Google Диск. Это означает, что некоторые файлы могут быть синхронизированы перед другими. – Dandy
id ожидает, что он отправит их вам, поскольку он их получит, так что это могут быть пара файлов, кэшируются и выполняются параллельно, и поэтому они не гарантируют порядок. – BugFinder