处理 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
};
等待您的答复,非常感谢。
您可以使用 while
和 try-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
文件是通过 FTP 上传的,它抛出文件被占用的 IOException
var watcher = new FileSystemWatcher();
watcher.Created += (sender, e) =>
{
var lines = File.ReadAllLines(e.FullPath, Encoding.UTF8); //io exception here
};
等待您的答复,非常感谢。
您可以使用 while
和 try-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