【发布时间】:2019-11-04 07:14:11
【问题描述】:
我目前正在尝试在本地文件夹中为创建的新文件保留一个 c# 计数器。
我有两个 CD 和 LP 的子目录,我必须不断检查。
File System Watcher 仅跟踪我复制的文件夹。 基本上我需要跟踪以 EM* 开头创建的文件夹,但是当我复制和粘贴文件夹而不是创建 EM* 文件夹时,我的代码显示计数器增加。 例如 EM1 EM2 仅 EM2 副本会增加计数器,即使这样有时也会增加 +2
static int LPcounter { get; set; }
static int CDcounter { get; set; }
static int LPCreated;
static int CDCreated;
FileSystemWatcher CDdirWatcher = new FileSystemWatcher();
FileSystemWatcher LPdirWatcher = new FileSystemWatcher();
public Form1()
{
InitializeComponent();
while (true)
watch();
}
public void watch()
{
CDdirWatcher.Path = @"C:\Data\LotData\CD";
CDdirWatcher.Filter = "EM*";
CDdirWatcher.NotifyFilter = NotifyFilters.DirectoryName | NotifyFilters.LastWrite;
CDdirWatcher.EnableRaisingEvents = true;
CDdirWatcher.Created += CDdirWatcher_Created;
LPdirWatcher.Path = @"C:\Data\LotData\LP";
LPdirWatcher.Filter = "EM*";
LPdirWatcher.NotifyFilter = NotifyFilters.DirectoryName;
LPdirWatcher.EnableRaisingEvents = true;
LPdirWatcher.Created += LPdirWatcher_Created;
}
private static void CDdirWatcher_Created(object sender, FileSystemEventArgs e)
{
CDCreated += 1;
}
private static void LPdirWatcher_Created(object sender, FileSystemEventArgs e)
{
LPCreated += 1;
}
【问题讨论】:
-
您的要求不够明确
-
很抱歉,如果我的要求不清楚,哪一部分令人困惑?抱歉,我仍然是在堆栈上发帖的新手。顺便说一句,我已经编辑了我的帖子以更清晰
-
我的理解是,您想为所有以
EM开头的名称添加一个监视,并且监视程序也为EM2-copy完成了它的工作,因为它也以@987654324 开头@那么这里有什么问题? -
由于某种原因 CDCreated 没有记录任何创建的东西,例如 EM1 , EM2 但是当我在调试时复制和粘贴旧文件时计数器上升
-
愚蠢的问题,但你为什么要在无限循环中调用 watch() ?你应该只需要调用一次来设置观察者,然后你会收到来自这些的事件,我想知道这是问题的一部分吗?自从我进行任何表单开发以来已经有一段时间了,但这看起来不对......
标签: c# linq filesystemwatcher