Sincronização inadvertidamente da pasta de rede durante a gravação do programa no arquivo

4

Eu estou tentando escrever um programa que faz alguma leitura / processamento / escrita.

Enquanto tudo funciona bem quando eu dou ao meu programa um caminho local, me deparo com um problema incomum: uso de memória enorme ao processar arquivos na rede local.

Se o caminho do arquivo for algo como " //network_address/folder/*.ext ", o programa usa cerca de 4G de RAM (ao contrário de 500 - 1G quando o caminho é algo como " c:/folder/*.ext ")

Eu usei o Process Monitor para ver o que está acontecendo e notei falhas de leitura consistentes na pasta " c:\windows\csc\v2.0.6\namespace " - que eu nem sabia que existia. Ao pesquisá-lo, descobri que ele era usado para sincronizar arquivos com um servidor de rede, talvez para exibir arquivos de rede offline.

As falhas acima estavam ocorrendo exatamente antes de um processo de gravação em arquivo iniciado (não antes de leituras), a pasta de namespace não era usada, eu não tinha nada sincronizado e as gravações reais nas unidades de rede eram bem-sucedidas.

Eu não configurei nenhuma opção para sincronizar pastas ... (e eu não quero)

Assim que assumi a propriedade dessa pasta, o uso de memória diminuiu (embora ainda tenha erros de leitura no Process Monitor).

Então ... Eu acho que o meu problema é que eu tenho tentado fazer algo que não tenho permissão, e usar muita memória para armazenar dados enquanto estou tentando fazer o que não é permitido, até que eu falhe e finalmente coloque os dados onde eles pertencem ...

A solução: evite fazer coisas que não posso fazer, certo?

Existe uma maneira (preferencialmente uma linha de comando que eu possa executar no meu código ou uma entrada de registro que eu possa modificar) que pode impedir que meu programa sincronize arquivos (se é isso que está acontecendo) ou usar essa pasta de namespace quando lendo uma unidade de rede?

Como posso impedir o Windows de sincronizar arquivos pelas minhas costas e apenas gravar arquivos diretamente na pasta de rede?

    
por Thalia 07.07.2012 / 00:40

1 resposta

1

Você já descobriu isso? Tente desativar os arquivos off-line no compartilhamento:

  1. Clique com o botão direito no compartilhamento
  2. Ir para a guia Compartilhamento
  3. Clique no botão Compartilhamento avançado
  4. Clique no botão Cache
  5. Selecione “Nenhum arquivo ou programa da pasta compartilhada está disponível offline. ”
  6. Clique em OK para fechar o pop-up Configurações off-line
  7. Clique em OK para fechar o pop-up Compartilhamento avançado
  8. Clique em Fechar para fechar a caixa de propriedade do seu compartilhamento

Outra coisa que você pode tentar do PC cliente é desabilitar o serviço de Arquivos Offline se este for o Win7 / Vista.

Deixe-nos saber como isso funciona.

    
por 18.07.2012 / 16:42