FileSystemWatcher:私は私のPC上で実行しているシンプルな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ドライブのフォルダを見ている見ての通り。そのフォルダも私のサーバー上で同期されます。時々私のサーバー上のシステムは、同じ名前を持つが、切り抜いた型にファイルの2ペアを作成します。
(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は、一度に1ファイルずつ処理します。上記のようにGoogleドライブを使用しています。つまり、一部のファイルは他のファイルの前に同期させることができます。 – Dandy
idは、それが取得されたときにそれらをあなたに送信することを期待します。そのため、ファイルのペアがキャッシュされ、並行して実行されるため、順序が保証されません。 – BugFinder