Pergunta

Aqui é o cenário:

Eu estou escrevendo um aplicativo que vai assistir a quaisquer alterações em um diretório específico.Este diretório será inundado com milhares de arquivos de um minuto cada, com um "quase" GUID exclusivo.O formato de arquivo é este:

GUID.dat onde GUID == xxxxxxxxxxxxxxxxxxxxxxxxxxxxx (o conteúdo interno não são relevantes, mas é apenas de dados de texto)

Meu aplicativo será um formulário que possui uma única caixa de texto que mostra todos os arquivos que estão sendo adicionados e removidos em tempo real.Cada vez que um novo arquivo vem em eu ter para actualizar a caixa de texto com esse arquivo, MAS tenho que primeiro certifique-se de que este semi-GUID exclusivo é realmente único, se for, atualizar a caixa de texto com esse novo arquivo.

Quando um arquivo é removido do diretório, verifique se ele existe e, em seguida, excluí-lo, actualização de texto de acordo.

O problema é que estou usando .NET filewatcher e parece que existe um buffer interno que é soprado para cima cada vez que o (buffersize + 1)-ésimo arquivo vem em.Eu também tentei manter uma Lista interna no meu app, e basta adicionar todos os arquivos que vem, mas não a única-GUID verificar mais tarde, mas não há dados.

Foi útil?

Solução

Um par de coisas que eu tenho na minha cabeça:

  • Se o guid é não exclusivo, não substituir o arquivo com o mesmo nome, ou é a seleção com base em uma pesquisa que faz alguma ação externa (e.g.verifique o arquivo)?(i.é.esta é uma YAGNI momento?)
  • Eu usei FileSystemWatcher antes com muito bom sucesso, você pode nos dar algumas ideias de como a como o seu realmente fazer as coisas?
  • Quando você diz "não há dados" ao trabalhar com a sua lista personalizada, qual foi o problema?E como você foi verificar alterações de sistema de ficheiros sem FileSystemWatcher?!

Desculpe não responder, ainda, apenas gostaria de saber mais sobre o problema :)

Outras dicas

Eu sugiro que você dê uma olhada no SHChangeNotify Chamada de API, que pode notificá-lo de todos os tipos de shell de eventos.Para monitorar o arquivo de criação e exclusão de atividade, você pode querer prestar atenção especial para a SHCNE_CREATE e SHCNE_DELETE argumentos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top