3 回答

TA貢獻1936條經(jīng)驗 獲得超7個贊
問題是通知過濾器。該程序試圖打開一個仍在復(fù)制的文件。我刪除了除LastWrite之外的所有通知過濾器。
private void watch()
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = path;
watcher.NotifyFilter = NotifyFilters.LastWrite;
watcher.Filter = "*.*";
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.EnableRaisingEvents = true;
}

TA貢獻1789條經(jīng)驗 獲得超8個贊
您沒有提供文件處理代碼,但是我假設(shè)您在第一次編寫這樣的東西時每個人都犯了同樣的錯誤:文件創(chuàng)建后,將立即引發(fā)filewatcher事件。但是,完成文件將需要一些時間。以文件大小為1 GB為例。該文件可能是由另一個程序創(chuàng)建的(Explorer.exe從某個地方復(fù)制該文件),但是要花幾分鐘才能完成該過程。該事件在創(chuàng)建時引發(fā),您需要等待文件準備好被復(fù)制。
您可以循環(huán)使用此功能來等待文件準備就緒。
- 3 回答
- 0 關(guān)注
- 689 瀏覽
添加回答
舉報