gpt4 book ai didi

c# - 使用 FileSystemWatcher 监控目录

转载 作者:IT王子 更新时间:2023-10-29 03:36:51 26 4
gpt4 key购买 nike

我正在使用 Windows 窗体应用程序来监视目录并将放置在其中的文件移动到另一个目录。

目前它会将文件复制到另一个目录,但是当添加另一个文件时,它只会以没有错误消息的方式结束。有时它会在第三个文件结束之前复制两个文件。

这是因为我使用的是 Windows 窗体应用程序而不是控制台应用程序吗?有什么方法可以阻止程序结束并继续观看目录?

private void watch()
{
this.watcher = new FileSystemWatcher();
watcher.Path = path;
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName;
watcher.Filter = "*.*";
watcher.Changed += OnChanged;
watcher.EnableRaisingEvents = true;
}

private void OnChanged(object source, FileSystemEventArgs e)
{
//Copies file to another directory.
}

public void Dispose()
{
// avoiding resource leak
watcher.Changed -= OnChanged;
this.watcher.Dispose();
}

最佳答案

问题出在通知过滤器上。该程序试图打开一个仍在复制的文件。我删除了除 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;
}

关于c# - 使用 FileSystemWatcher 监控目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15017506/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com