Principales respuestas
grabar en un archivo de texto varios procesos simultaneos

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!
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- Propuesto como respuesta Karen MalagónModerator viernes, 13 de febrero de 2015 22:33
- Marcado como respuesta Karen MalagónModerator lunes, 16 de febrero de 2015 16:20
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- Propuesto como respuesta Karen MalagónModerator viernes, 13 de febrero de 2015 22:33
-
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- Propuesto como respuesta Karen MalagónModerator viernes, 13 de febrero de 2015 22:33
- Marcado como respuesta Karen MalagónModerator lunes, 16 de febrero de 2015 16:20