Pessoal, recentemente estive estudando para certificação da prova do framework .NET e em um dos capítulos do livro da certificação fala sobre monitoramento de diretório, li toda a teoria, porém não cheguei a implementar pois achei a codificação chata para se fazer . Estava com um tempo livre e resolvi implementar algo para monitorar os meus diretórios, algo que me mostrasse o que estava acontecendo na minha máquina, logo segue abaixo um código com uma implementação bem simples sobre essa classe bem fácil de ser utilizada.
Foram criados para esse Form os seguintes controles:
– 2 Labels
-1 Textbox
– 1 Listbox
– 1 Button
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; namespace BKPPEN { public partial class Form1 : Form { public Form1() { InitializeComponent(); btnDir.Visible = false; } // Objeto que fica escutando o diretório private FileSystemWatcher objFileSystemWatcher; private delegate void addItemListHandler(string strValue); private void btnDir_Click(object sender, EventArgs e) { //DialogResult objDialog = ShowDialog(); //txtDir.Text = objDialog.; } private void btnManager_Click(object sender, EventArgs e) { objFileSystemWatcher = new System.IO.FileSystemWatcher(txtDir.Text); //Adiciono os delegates objFileSystemWatcher.Changed += new System.IO.FileSystemEventHandler(fileSystemWatcher_Changed); objFileSystemWatcher.Created += new System.IO.FileSystemEventHandler(fileSystemWatcher_Created); objFileSystemWatcher.Deleted += new System.IO.FileSystemEventHandler(fileSystemWatcher_Deleted); objFileSystemWatcher.Renamed += new System.IO.RenamedEventHandler(fileSystemWatcher_Renamed); //Ativo os subsdiretorios objFileSystemWatcher.IncludeSubdirectories = true; //Monitorar todos os arquivos objFileSystemWatcher.Filter = "*.*"; objFileSystemWatcher.EnableRaisingEvents = true; } private void fileSystemWatcher_Changed(object sender, System.IO.FileSystemEventArgs e) { //Adiciono na list box addItemLit("Alteração do arquivo/pasta >> " + e.Name + " << "); } private void fileSystemWatcher_Created(object sender, System.IO.FileSystemEventArgs e) { //Adiciono na list box addItemLit("Criação do arquivo/pasta >> " + e.Name + " << "); } private void fileSystemWatcher_Deleted(object sender, System.IO.FileSystemEventArgs e) { //Adiciono na list box addItemLit("Exclusão do arquivo/pasta >> " + e.Name + " << "); } void fileSystemWatcher_Renamed(object sender, System.IO.RenamedEventArgs e) { //Adiciono na list box addItemLit("Renomeado o nome do arquivo/pasta >> " + e.Name + " << "); } private void addItemLit(string strValue) { if (lstAdd.InvokeRequired) lstAdd.Invoke(new addItemListHandler(addItemLit), new object[] { strValue }); else lstAdd.Items.Add(strValue); } } }
Qualquer dúvida gritem!!!
[]´s