Compartilhar via


Considerações para arquivo alterações em sistemas high-volume

O FileSystemWatcher componente tem o potencial para receber um número enorme de eventos, especialmente se você tiver conjunto-o para inspeção a um diretório de alto tráfego. Isso pode causar problemas, sistema autônomo a FileSystemWatcher componente só pode receber notificações de eventos a uma taxa gerenciável. Se a taxa na qual os eventos estão vindo excede a taxa em que o componente pode recebê-las, os eventos em excesso serão armazenados em um buffer é então passado para o componente.O componente converte cada entrada no buffer a um evento a ser aumentado para o código do usuário.Esse buffer pode causar um problema que pode estourar.Se o número de alterações em um diretório é tão grande que eles não podem todos caber no buffer, o sistema operacional irá emitir uma notificação "em aberto" e o componente irá disparar uma exceção.

Observação de segurança:

Um ataque de negação de serviço é possível se um programa mal-intencionado obtiver acesso a um diretório de seu FileSystemWatcher componente monitora e gera muitas alterações que o componente não é possível gerenciá-los. Siga as recomendações nesta página de ajuda e use listas de controle de acesso corretamente para reduzir o risco de um ataque de negação de serviço.

Para evitar esse problema, você deve fazer várias coisas.Primeiro, você deve conjunto seu buffer para um dimensionar apropriado para o número aproximado de eventos que você espera receber.Por padrão, o buffer é conjunto para um dimensionar de 4 KB.Um buffer de 4 KB pode rastrear alterações nos arquivos aproximadamente 80 em um diretório.Cada evento tem até 16 bytes no buffer mais suficiente bytes para armazenar o nome do arquivo, em Unicode (2 bytes por caractere), que o evento ocorreu no.Você pode usar essas informações para aproximar o dimensionar do buffer será necessário.

reiniciar o dimensionar do buffer definindo o InternalBufferSize propriedade no Propriedades janela.Se você estiver usando o Microsoft Windows 2000, você deve aumentar o dimensionar do buffer em incrementos de 4 KB, pois ele corresponde ao padrão do sistema operacional dimensionar da página.Em qualquer Outros sistema operacional, você deve aumentar o dimensionar do buffer em incrementos que correspondem ao padrão do sistema operacional dimensionar da página.

Dica:

Se você não tiver certeza do dimensionar de página padrão para o sistema operacional que você está usando, a maneira mais segura para prosseguir é apenas duplique o dimensionar original do buffer.Isso manterá o intervalo original necessário para seu sistema operacional.

Adição para definir um dimensionar de buffer apropriado, você pode usar as três seguintes propriedades para controle a quantidade de informações que recebe o buffer:

  • Use o NotifyFilter propriedade para determinar se o FileSystemWatcher componente procura em todas as alterações ou apenas as alterações especificadas no diretório observado.

  • Use o IncludeSubdirectories propriedade para indicar se você deseja incluir subpastas da pasta que você está assistindo. Se você desative essa opção quando você não precisa dele, você receberá eventos menos do que quando está ativado no.

  • Se você tiver definido o FileSystemWatcher componente para observar a Changed evento, você pode usar o NotifyFilter propriedade para especificar somente os eventos em que você está interessado.

    Observação:

    Embora você também pode usar o Filter propriedade para especificar arquivos ou subpastas que você deseja observadas, essa propriedade é aplicada após as alterações são adicionadas ao seu buffer e não reduz o dimensionar do buffer em todos os. Em vez disso, use o NotifyFilter propriedade para controlar a quantidade de informações gravadas no buffer.

Consulte também

Tarefas

Como: Configurar o componente FileSystemWatcher instâncias

Conceitos

Introdução ao monitoramento de sistema arquivo eventos