Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2010, 16:05   #1
pa6kevi4
Пользователь
 
Регистрация: 15.09.2009
Сообщений: 52
Восклицание Запись в файл и.т.п.

Добрый день, уважаемые программисты!
У меня к вам два вопроса по коду.
Первый. Правильно ли у меня организовано логирование в текстовой файл? Во время работы программы строки не всегда поступают в файл.

Код:
    public class TxtLogger : ILogger
    {
        protected FileStream f1;
        protected string FileName = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + "\\Folder\\Output1.txt";
        protected string CurrentLogText;
        protected StreamWriter output;
     
        public TxtLogger()
        {
            f1 = new FileStream(FileName, FileMode.Append);
            output = new StreamWriter(f1);
        }

        public void Log(string message, MessageType messageType)
        {
            CurrentLogText = "Message text: " + message + ", " + DateTime.Now.ToString() + ", Type: " + messageType;
            output.WriteLine(CurrentLogText);
        }
    }
При нажатии на кнопку запуска -
Код:
       arr = new MessageGenerator[numberOfGen];

                    for (int c = 0; c < arr.Length; c++)
                    {
                        arr[c] = new MessageGenerator(numberOfGen, mseconds);
                        if (checkBox1.Checked)                      
                            arr[c].MessageGeneratedEvent += new MessageGenerator.MyDelegate(lg1.Log);                                             
                        if (checkBox2.Checked)
                            arr[c].MessageGeneratedEvent += new MessageGenerator.MyDelegate(lg2.Log);
                        if (checkBox3.Checked)
                            arr[c].MessageGeneratedEvent += new MessageGenerator.MyDelegate(lg3.Log);

                        arr[c].go();
                    }
Второй вопрос.
Как сделать логирование в своём потоке? Чтобы генератор не ждал, пока работает class TxtLogger, чтобы этот класс брал строку и сразу же передавал управление обратно.
pa6kevi4 вне форума Ответить с цитированием
Старый 23.06.2010, 16:45   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
output = new StreamWriter(f1);
Это же локальная переменная. Насколько я знаю она в другом методе будет недоступна, сделай ее глобальной как private
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.06.2010, 11:00   #3
pa6kevi4
Пользователь
 
Регистрация: 15.09.2009
Сообщений: 52
По умолчанию

Спасибо, но ничего не изменилось
pa6kevi4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись в файл (С) ya chef Помощь студентам 0 15.12.2009 13:49
Запись в файл. Baaandit Общие вопросы Delphi 4 27.11.2009 16:49
запись в файл Артэс Общие вопросы C/C++ 12 24.11.2009 01:32
Запись в файл (C++) Serant Помощь студентам 0 10.05.2009 09:49
Запись в файл [Smarik] Помощь студентам 4 07.05.2008 23:26