【发布时间】:2016-07-21 04:23:49
【问题描述】:
我正在使用 FileSystem Watcher 监视文件夹的文件创建(复制)事件。我只希望程序处理图像文件。
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Filter = "*.*";
watcher.Created += new FileSystemEventHandler(watcher_FileCreated);
watcher.Path = path;
所以我尝试创建一个位图并在抛出异常时避免该文件
private static void watcher_FileCreated(object sender, FileSystemEventArgs e)
{
try
{
using (Bitmap test = new Bitmap(Bitmap.FromFile(e.FullPath)))
{
mytoprocesslist.add(e.FullPath);
}
//do my processing with image
Console.WriteLine(e.FullPath);
}
catch (Exception error)
{
Console.WriteLine("File Error");
}
}
即使复制了有效的图像文件,这也会引发Out of Memory exception,我认为这是因为在完全复制文件之前引发了事件。我怎样才能克服这个?我只想将有效的图像文件添加到待办事项列表中,稍后我将一一处理这些图像。
【问题讨论】:
-
上面的代码似乎没有任何可能导致内存不足的行。很可能您的“//对图像进行处理”正在引发此错误。如果您觉得文件尚未完全复制,您可以添加等待 1 秒。
-
@puneet
using (Bitmap test = new Bitmap(Bitmap.FromFile(e.FullPath))) -
我设置了
watcher.NotifyFilter = NotifyFilters.FileName;并加载图像,我使用的是Image.FromFile(e.FullPath);,它可以正常工作,没有任何异常。 -
对于对此投反对票的人,最好发表评论。
-
@x...设置
watcher.NotifyFilter = NotifyFilters.FileName;有什么作用?
标签: c# .net filesystemwatcher