【问题标题】:How to delete a particular instance of FileSystemWatcher object如何删除 FileSystemWatcher 对象的特定实例
【发布时间】:2012-08-25 06:51:43
【问题描述】:

我有一个 Windows 应用程序,它使用 FileSystemWatcher 来监视文件的更改。可以添加多个文件位置,并为每个位置创建一个新的 FileSystemWatcher 实例,并将该位置添加到列表框中。有一个从列表框中删除位置的选项。删除位置时,我需要删除/处置 FileSystemWatcher 的特定实例。有什么办法可以做到这一点?提前致谢。

FileSystemWatcher fsw;

    private void CreateFWInstance(string strLoc)
    {
        if (strLoc != string.Empty)
        {
            fsw = new FileSystemWatcher();
            fsw.Changed += new FileSystemEventHandler(OnChanged);

            fsw.Path = strLoc;
            fsw.SynchronizingObject = this;

            fsw.EnableRaisingEvents = true;

        }
    }

【问题讨论】:

    标签: c# filesystemwatcher windows-applications


    【解决方案1】:

    您需要保留对实例的引用,例如作为列表框条目中的 值,或者可能是一个 Dictionary<string, FileSystemWatcher> 从路径映射到观察者。然后只需处理观察者并将其从字典中删除/删除列表项。

    【讨论】:

    • 如何处理对象实例?我尝试从字典中删除该项目,但该位置仍在监视中。
    • 调用 Dispose 就可以了——就这么简单! (设置 EnableRaisingEvents 也应该可以,但无论如何你都应该处理它。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 2015-08-24
    • 1970-01-01
    相关资源
    最近更新 更多