【发布时间】:2015-12-13 21:47:24
【问题描述】:
观察者方法:
FileSystemWatcher watcher = null;
private void watch()
{
watcher = new FileSystemWatcher();
watcher.Path = SavePathTextBox.Text;
watcher.NotifyFilter = NotifyFilters.LastWrite;
watcher.Filter = "*.JPG";
watcher.Changed += watcher_Changed;
watcher.EnableRaisingEvents = true;
}
然后在发生更改的情况下,我正在查看文件是否繁忙并查看文件大小:
void watcher_Changed(object sender, FileSystemEventArgs e)
{
if (IsFileReady(e.FullPath) == false)
{
this.Invoke((Action)delegate { label6.Text = "Busy"; });
}
else
{
if (e.ChangeType == WatcherChangeTypes.Changed)
{
var info = new FileInfo(e.FullPath);
var theSize = info.Length;
}
else
{
this.Invoke((Action)delegate { label6.Text = "File Ready"; });
watcher.Dispose();
}
}
}
我看到一个断点,它正在到达零件:
var info = new FileInfo(e.FullPath);
var theSize = info.Length;
但它永远不会到达 else 部分:
this.Invoke((Action)delegate { label6.Text = "File Ready"; });
watcher.Dispose();
我怎么知道文件大小什么时候不再改变?也许 Changed 事件中的整个代码是错误的,但我想检查文件是否繁忙,并跟踪文件大小,直到大小停止变化。
【问题讨论】:
-
将结果写入临时文件,完成后将其移动到另一个位置...