none
textwriter se cierra RRS feed

  • Pregunta

  • Hola, en mi programa creo un archivo de texto para usarlo como log, en él escribo mediante un textwriter, pero por alguna razón que no comprendo en algún momento se cierra y me salta un error algunas veces:  "No se puede escribir en un textwriter cerrado"

    Puse está condición para ver si evitaba que saltara este error

     if (archivoLog != null)
                {
                    archivoLog.WriteLine("Empresa no encontrada: " + nombreEmpresa);
                }
                else
                {
                    archivoLog = System.IO.File.AppendText(Application.StartupPath + "\\log.txt");
                }


    viernes, 3 de febrero de 2012 14:46

Respuestas

Todas las respuestas

  • Hola,

    Se cierra porque seguro que esta en un metodo  que no nos estás mostrando, nos puedes mostrar algo más de código, de todas formas lo bueno es que se cierra, deberías pensar que cada que escribes debes de abrir la secuencia y después cerrarla :)

    Saludos,


    phurtado
    viernes, 3 de febrero de 2012 14:52
    Moderador
  • hola

    como declaras el textwriter?

    lo pones dentro de un bloque "using"

     

    veo que alli validas un

    archivoLog 

    pero este es el textwriter ?

     

    para un log porque no usas log4net o sino la funcionalida de System.Diagnostics de .net para llevar el log en lugar de un simple textwriter (el cual no es bueno para llevar un log)

    log4net Tutorial

    How to use log4net

    A Brief Introduction to the log4net logging library, using C#

    [Winforms] Control global de Errores – Implementar Log

     

    como veras para un log hay opciones mejores que un textwriter

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 3 de febrero de 2012 14:53
  • Hola, lo que podés hacer es crear un método para que reciba como parámetro lo que quieres guardar. De esa forma dentro del método, abres el textwriter, guardas lo que viene por parámetro y lo cierras. De paso si es un log te va a servir para llamar siempre al mismo método desde otra parte de tu aplicación.

     

    Saludos,


    Mariano Llarin.-
    viernes, 3 de febrero de 2012 14:55
  • el archivolog es mi textwriter y lo declaro así:

     public partial class Form1 : Form
        {
            
            System.IO.StreamWriter archivoLog = new System.IO.StreamWriter(Application.StartupPath + "\\log.txt");
    
    
    ......etc

    Quizá es buena idea eso de que lo habra y cierre cada vez que escriba o que cree un método que haga eso

    viernes, 3 de febrero de 2012 15:00
  • pero pones esto a nivel del formulario y si tienes varios formularios que pasaria?

    podrias crear una clase de log

     

    public class LogHelper{

        private System.IO.StreamWriter archivoLog = null

        public LogHelper(){

             archivoLog  = new System.IO.StreamWriter(Application.StartupPath + "\\log.txt");

       }

       public void Write(){

           archivoLog.WriteLine("Empresa no encontrada: " + nombreEmpresa);

       }

     

    }

    esto podrias reutilizarlo en todos los formularios

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 3 de febrero de 2012 15:08
  • Hola Jor,

    Te voy a dar un consejo y es que hagas lo que te ha dicho Leandro.

    utiliza Log4Net y el tiempo que estás perdiendo en esta pregunta lo vas a ganar con creces en el futuro :)

    Saludos,

     


    phurtado
    viernes, 3 de febrero de 2012 15:10
    Moderador