使用FileSystemWatcher获取文件使用异常

本文关键字:异常 文件 FileSystemWatcher 获取 使用 | 更新日期: 2023-09-27 18:27:04

所以我要做的是:

public MainWindow()
{
    InitializeComponent();
    FileSystemWatcher watcher = new FileSystemWatcher();
    watcher.Path = "F:''Scoreboard Assistant''output''";
    watcher.Filter = "event.xml";
    watcher.NotifyFilter=NotifyFilters.LastWrite;
    watcher.Changed += new FileSystemEventHandler(file_Changed);
    watcher.EnableRaisingEvents = true;
}
private void file_Changed(object sender, FileSystemEventArgs e)
{
    XmlDocument config = new XmlDocument();
    config.Load(e.FullPath.ToString());
    string text1 = config.SelectSingleNode("event/text1").InnerText;
    string text2 = config.SelectSingleNode("event/text2").InnerText;
}

我所做的是观察对特定XML文件的更改。然后,如果检测到对文件的更改,它将读取XML文件并从中提取变量。然而,当我运行代码时,我会得到以下错误:

System.Xml.dll 中发生类型为"System.IO.IOException"的未处理异常

附加信息:进程无法访问文件"F:''Scoreboard Assistant ''output''event.xml",因为另一个进程正在使用该文件。

我该如何解决这个问题?

使用FileSystemWatcher获取文件使用异常

FileSystemWatcher可以在写入文件时引发多个写入事件。事实上,每次刷新缓冲区都会引发一个事件。此错误意味着其他进程已写入该文件,但尚未完成

你是怎么处理的?只需忽略此错误,然后在收到的下一个写入事件中重试。您可能会看到文件被锁定的几个写入事件,但当您收到最后一个事件时,其他进程应该已经解锁了它。