实现功能
实时监控某固定文件夹下图片的变化,并在Form窗体中实时显示最新的图片。
备注:当图片的格式为bmp的时候,无法实现,会发生“内存不足”的报警。
实现代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 文件夹实时监控winform
{
public partial class Form1 : Form
{
public static Form1 mainFrm;
public Form1()
{
mainFrm = this;
InitializeComponent();
FILEWatcherStart("D:/test", "*.jpeg");
}
private static void FILEWatcherStart(string path, string fliter)
{
try
{
//实例化
FileSystemWatcher _watcher = new FileSystemWatcher();
//获取或设置要监视的目录的路径
_watcher.Path = path;
//获取或设置要监视的更改的类型
_watcher.NotifyFilter = NotifyFilters.FileName | NotifyFilters.Size | NotifyFilters.DirectoryName;
//获取或设置一个值,该值指示是否应监视指定路径中的子目录
_watcher.IncludeSubdirectories = true;
//FileSystemEventHandler 委托,表示将处理 FileSystemWatcher 类的 Changed、Created 或 Deleted 事件的方法。
//Created,当在指定 System.IO.FileSystemWatcher.Path 中创建文件和目录时发生
//+= 表示绑定(注册)事件
_watcher.Created += new FileSystemEventHandler(FileWatcher_Created);
//Changed,当更改指定 System.IO.FileSystemWatcher.Path 中的文件和目录时发生
_watcher.Changed += new FileSystemEventHandler(FileWatcher_Changed);
//Deleted,删除指定 System.IO.FileSystemWatcher.Path 中的文件或目录时发生
_watcher.Deleted += new FileSystemEventHandler(FileWatcher_Deleted);
//Renamed,重命名指定 System.IO.FileSystemWatcher.Path 中的文件或目录时发生
_watcher.Renamed += new RenamedEventHandler(FileWatcher_Renamed);
//事件监控启动
_watcher.EnableRaisingEvents = true;
}
catch (Exception ex)
{
MessageBox.Show("Error:" + ex.Message);
}
}
//文件夹文件增加响应事件,pictureBox更新图片
private static void FileWatcher_Created(object source, FileSystemEventArgs e)
{
//禁止捕获对错误线程的调用
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
Form1.mainFrm.textBox1.Text = e.FullPath;
Form1.mainFrm.pictureBox1.Image = Image.FromFile(e.FullPath);
}
//文件夹文件变更响应事件
private static void FileWatcher_Changed(object source, FileSystemEventArgs e)
{
MessageBox.Show("变更:" + e.ChangeType + ";" + e.FullPath + ";" + e.Name);
}
//文件夹文件变更响应事件
private static void FileWatcher_Changed(object source, FileSystemEventArgs e)
{
MessageBox.Show("变更:" + e.ChangeType + ";" + e.FullPath + ";" + e.Name);
}
//文件夹文件删除响应事件
private static void FileWatcher_Deleted(object source, FileSystemEventArgs e)
{
MessageBox.Show("删除:" + e.ChangeType + ";" + e.FullPath + ";" + e.Name);
}
//文件夹文件重命名响应事件
private static void FileWatcher_Renamed(object sender, RenamedEventArgs e)
{
//MessageBox.Show("重命名: OldPath:{0} NewPath:{1} OldFileName{2} NewFileName:{3}", e.OldFullPath, e.FullPath, e.OldName, e.Name);
}
}
}
运行效果
启动运行后的初始界面
在test文件夹中添加名称为“66565.jpeg”图片后的运行界面效果