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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2012, 20:51   #1
spbsmile
Новичок
Джуниор
 
Регистрация: 27.03.2012
Сообщений: 1
По умолчанию минимизация

привет народ! подскажите , помогите, пожалуйста
Код:
using System;
using System.IO;
using System.Text;
using System.Threading;

namespace ConsoleApplication123
{
    public class InnerClassTest
    {
        public static void Main(String[] args)
        {

            TalkingClock clock = new TalkingClock(3000, true, "Alex");
            TalkingClock clock2 = new TalkingClock(5000, true, "Petr");
            clock.Start();
            //clock.join();
            clock2.Start();

            Console.ReadLine();
        }
    }

    class TalkingClock
    {
        private Timer t;
        private TimerPrinter listener;

        public TalkingClock(int interval, Boolean beep, String name)
        {
            this.interval = interval;
            this.beep = beep;
            this.name = name;
        }

        public void Start()
        {
            listener = new TimerPrinter();
            t = new Timer(new TimerCallback(listener.CheckStatus), this, 0, interval);
        }

        void OnTick()
        {
        }

        private int interval;
        private Boolean beep;
        public String name;
    }
    class TimerPrinter
    {
        static object fileLocker = new object();

        // This method is called by the timer delegate. 
        public void CheckStatus(Object stateInfo)
        {
            try
            {
                lock (fileLocker)//лок для предотвращения одновременной записи в файл разными потоками
                {
                    DateTime now = DateTime.Now;
                    String str = now.ToString();
                    
                    TalkingClock sender = stateInfo as TalkingClock;
                    sender.name = sender.name + "\r\n";
                    using (StreamWriter sw = new StreamWriter(File.Open("D:\\Variables.txt", FileMode.Append, FileAccess.Write)))
                      
                       sw.WriteLine(sender.name + str);
                }
            }
            catch (FileNotFoundException e)
            {
                Console.WriteLine(" не найден файл ");
            }
            catch (IOException e)
            {
                Console.WriteLine(" другая ошибка на ввод - вывод ");
            }
        }
    }
}
Вся работа с файлом внутри блокировки. Этот раздел надо минимизировать.
?? как вынести запись файла за блокировку?? что я тогда буду блокировать ??
spbsmile вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
минимизация автоматов shelest Фриланс 4 17.05.2010 16:35
Минимизация brick Помощь студентам 0 27.12.2009 00:42
Минимизация приложения Лубышев Общие вопросы Delphi 3 25.10.2007 16:11