处理 FileSystemWatcher.Created 事件时发生文件读取错误

An file reading error occurred while handling FileSystemWatcher.Created event

文件是通过 FTP 上传的,它抛出文件被占用的 IOException

var watcher = new FileSystemWatcher();
watcher.Created += (sender, e) =>
{
    var lines = File.ReadAllLines(e.FullPath, Encoding.UTF8); //io exception here
};

等待您的答复,非常感谢。

您可以使用 whiletry-catch 块。将您的文件读取代码放入 while 循环并循环直到您成功读取文件(这意味着您已成功通过 try 块)。或者像评论中建议的那样使用一些延迟(但这并不能保证不会发生异常)。

你会在两种情况下退出:成功读取文件或抛出非IO异常。这意味着您需要更复杂的 catch 部分。您可以通过此了解更多详细信息:)

只需添加一个小延迟,例如:

var watcher = new FileSystemWatcher();
watcher.Created += (sender, e) =>
{
    Thread.Sleep(10);
    var lines = File.ReadAllLines(e.FullPath, Encoding.UTF8); //io exception here
};

既然你提到文件很大,你可以按照下面贴出的代码来做SO Post