【发布时间】:2015-07-30 08:14:50
【问题描述】:
private void MonitorFileForChanges()
{
Timer timerFileMonitor = new Timer();
timerFileMonitor.Interval = 10000;
timerFileMonitor.Tick += timerFileMonitor_Tick;
timerFileMonitor.Start();
}
void timerFileMonitor_Tick(object sender, EventArgs e)
{
var directory = new DirectoryInfo(userVideosDirectory);
var myFile = directory.GetFiles()
.OrderByDescending(f => f.LastWriteTime)
.First();
long oldFileSize = 0;
}
我的问题是如何在 Tick 事件中检查文件大小的变化? 当没有更多变化时停止计时器。
尝试使用 FileSystemWather:
private void WatchDirectory()
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = userVideosDirectory;
watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.Size;
watcher.Filter = "*.mp4";
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.EnableRaisingEvents = true;
}
private void OnChanged(object source, FileSystemEventArgs e)
{
if (e.ChangeType == WatcherChangeTypes.Changed)
{
var info = new FileInfo(e.FullPath);
var theSize = info.Length;
label2.BeginInvoke((Action)(() =>
{
label2.Text = theSize.ToString();
}));
}
dirchanged = true;
}
这是可行的,但我如何检查最后一次大小更改我的意思是如何在 5 或 10 秒后再次检查以查看是否有其他更改,如果没有则停止事件?
我的意思是没有像这样完成的事件。
【问题讨论】:
-
您可能对
FileSystemWatcher感兴趣