Я контролирую событие для создания файлов (копирование) с помощью FileSystem Watcher. Я хочу, чтобы программа обрабатывала файлы изображений.FileSystem Watcher- Проверка, является ли скопированный файл изображением
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Filter = "*.*";
watcher.Created += new FileSystemEventHandler(watcher_FileCreated);
watcher.Path = path;
Так что я пытаюсь создать Bitmap и избежать файл, если исключение
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
@puneet 'using (Bitmap test = new Bitmap (Bitmap.FromFile (e.FullPath))) – techno
Я устанавливаю' watcher.NotifyFilter = NotifyFilters.FileName; 'и для загрузки изображения я использую' Image.FromFile (e.FullPath); и он работает без каких-либо исключений. –