none
Gravar dados no arquivo de texto por vários usuários. RRS feed

  • Pergunta

  • Boa tarde,

    Estou desenvolvendo uma funcionalidade em uma aplicação, preciso fazer o seguinte processo:

    Preciso salvar algumas informações em um arquivo de texto. Essa funcionalidade deve permitir que mais de um usuário ao mesmo tempo possa inserir informações no arquivo.

    Até ai eu tenho o seguinte código:

    using (FileStream stream = File.Open(fileName, FileMode.Append, FileAccess.Write, FileShare.Write)) using (StreamWriter sw = new StreamWriter(stream)) { sw.WriteLine(data); }

    Ai vem o meu problema, alem de permitir que mais de um usuário insira informações ao mesmo tempo, cada linha nova criada no arquivo deve ser inserida na penúltima linha e não na ultima.

    Alguém tem alguma solução para este problema?

    terça-feira, 4 de outubro de 2016 17:32

Respostas

  • Bernardo, por menor que seja o número de usuários concorrentes, há a chance de duas ou mais requisições no "mesmo momento" o que pode gerar um dos comportamentos:

    • Uma requisição travar a outra devido ao lock no arquivo
    • Uma requisição gerar uma exceção devido à tentativa de gravar em um arquivo já aberto para modificação

    Uma opção se o processo não for muito crítico seria o uso de Mutex (https://msdn.microsoft.com/en-us/library/system.threading.mutex(v=vs.110).aspx). 

    Outra opção seria utilizar um mecanismo de fila / message queue, mas dependendo da necessidade seria exagero.


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por um acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    • Marcado como Resposta Bernardo Cervo sexta-feira, 21 de outubro de 2016 19:17
    terça-feira, 4 de outubro de 2016 18:08