none
grabar en un archivo de texto varios procesos simultaneos RRS feed

  • Pregunta

  • Buenas, tengo una consulta, necesito grabar en un archivo de texto pero puede suceder que varias personas ejecuten el proceso de guardar de manera simultanea (digamos que varias personas en su PC pueden darle al botón "Grabar" al mismo tiempo).

    El tema es que si uno está grabando, el otro me tira error porque el archivo está bloqueado.

    Hay alguna manera de manejarlo?

    El codigo que uso para grabar en el archivo es este:

                string archivo = "c:\datag.txt";
    
                StreamWriter writer = File.AppendText(archivo);
    
                writer.WriteLine("texto a grabar");
    
                writer.Close();

    Gracias de antemano!

    viernes, 13 de febrero de 2015 13:33

Respuestas

  • Lograr esto desde múltiples PC's, diría yo, que no es confiable.  Podría uno hacer un loop hasta topar con la suerte de encontrar el archivo disponible, pero eso es un juego de probabilidades y yo no suelo recomendar ese tipo de programación.

    Sí sería posible desde la misma PC, múltiples procesos sincronizando con un mutex.

    Como el requerimiento es "desde múltiples PC's" lo que tendrá que hace es un WCF que reciba los datos a escribir y que sea este WCF el que sincronice las peticiones de escritura.


    Jose R. MCP
    Code Samples

    viernes, 13 de febrero de 2015 14:46
    Moderador

Todas las respuestas

  • >>El tema es que si uno está grabando, el otro me tira error porque el archivo está bloqueado.

    es un tema de concurrencia, no se puede acceder desd varios procesos al mismo archivo

    hasta que no se librere otro no podras escribir, podrias suar el vloque using

    using(StreamWriter writer = File.AppendText(archivo)){ writer.WriteLine("texto a grabar");

    }

    para que despues de escribir se libere y otra operacion pueda realizarse

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 13 de febrero de 2015 14:30
  • Lograr esto desde múltiples PC's, diría yo, que no es confiable.  Podría uno hacer un loop hasta topar con la suerte de encontrar el archivo disponible, pero eso es un juego de probabilidades y yo no suelo recomendar ese tipo de programación.

    Sí sería posible desde la misma PC, múltiples procesos sincronizando con un mutex.

    Como el requerimiento es "desde múltiples PC's" lo que tendrá que hace es un WCF que reciba los datos a escribir y que sea este WCF el que sincronice las peticiones de escritura.


    Jose R. MCP
    Code Samples

    viernes, 13 de febrero de 2015 14:46
    Moderador