Arquivo

Posts Tagged ‘Monitoramento’

Monitorando Pastas

Quantas vezes precisamos implementar um looping para verificar se um determinado arquivo foi copiado para uma pasta, ou quanta vezes temos que monitorar a alteração do conteúdo de um documento ou se o mesmo foi apagado. Este processo exige um esforço muito grande além de diminuir a performance de nosso sistema devido a quantidade de loopings que temos que fazer.

Para resolver este problema podemos utilizar a classe FileSystemWatcher do namespace System.IO. Com ela nós podemos configurar uma determinada pasta para ser monitorada e quando algum evento acontecer nós seremos avisados.

Para iniciar o monitoramento você só precisa configurar duas coisas.

FileSystemWatcher monitorPastas = new FileSystemWatcher(@”C:\Teste”); //Instancia a classe configurando a pasta que será monitorada
monitorPastas.EnableRaisingEvents = true; //Habilita o monitoramento

Você também pode fazer alguma configurações interessantes

monitorPastas.Filter = “*.txt”; //Nesta string você pode filtrar quais arquivos você deseja monitorar
monitorPastas.IncludeSubdirectories = true; //Booleano indicando se subdiretórios serão monitorados ou não           
monitorPastas.Path = @”C:\Teste”; //Altera o path que será monitorado
monitorPastas.NotifyFilter = NotifyFilters.FileName | NotifyFilters.Size;  //Configura quais tipos de alterações deverão ser monitoradas

Para receber as notificações do monitoramento e trata-los você deve associar um evento específico a um método criado por você respeitando as assinatura do delegate.

Segue abaixo os quatros eventos possíveis que você pode monitorar.

monitorPastas.Changed += new FileSystemEventHandler(monitorPastas_Changed); //Alterações
monitorPastas.Created += new FileSystemEventHandler(monitorPastas_Created); //Criações
monitorPastas.Deleted += new FileSystemEventHandler(monitorPastas_Deleted); //Exclusões
monitorPastas.Renamed += new RenamedEventHandler(monitorPastas_Renamed); //Renomeações

Segue abaixo os quatros métodos que você deve criar para poder tratar esses eventos.

void monitorPastas_Renamed(object sender, RenamedEventArgs e)
{
    Console.WriteLine(e.ChangeType + ” de ” + e.OldFullPath + ” para ” + e.Name);
}
void monitorPastas_Deleted(object sender, FileSystemEventArgs e)
{
   Console.WriteLine(e.ChangeType + “: ” + e.FullPath);
}
void monitorPastas_Created(object sender, FileSystemEventArgs e)
{
   Console.WriteLine(e.ChangeType + “: ” + e.FullPath);
}
void monitorPastas_Changed(object sender, FileSystemEventArgs e)
{
   Console.WriteLine(e.ChangeType + “: ” + e.FullPath);
}

Espero que com essa dica vocês tenham a possibilidade de melhorar a performance dos seus sistemas.

Advertisement
Categorias:.NET Framework Etiquetas:
%d bloggers gostam disto: