Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Непонятка с Timer, Рано вызывается Timer.Stop() 
V
    Опции темы
SharpBeginner
Дата 25.7.2009, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 25.7.2009

Репутация: нет
Всего: нет



Помогите пожалуйста разобраться с Timer. Уже башню сносит  smile  Вроде все работает, но не так как хотелось бы. Вместе со строкой "Моя первая строка" вызывается "Тестовая строка". Как сделать так, чтобы в консольном окне появлялась "Моя первая строка", затем вызывался метод Console.Clear, далее происходил бы выход из Clear  и только после этого появлялась "Тестовая строка"? Вот один из вариантов моих терзаний:
Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;

namespace Ex9_Ch5
{
    
    class Program
    {
        #region Модуль заставки
        static void Zastavka()
        {
            Console.WriteLine("Моя первая программа. ");
        }
        #endregion

        static Timer myTimer1 = new Timer(3000);
        static Timer myTStop = new Timer(2900);
        static void Main(string[] args)
        {
            Program.Zastavka();
            myTimer1.Elapsed += new ElapsedEventHandler(ConsoleClear);
            myTimer1.Start();
            myTStop.Elapsed += new ElapsedEventHandler(TStop);
            Console.WriteLine("Тестовая строка");
            Console.ReadKey();
        }

        static void TStop(object sender, ElapsedEventArgs e)
        {
            myTimer1.Stop();
        }

        static void ConsoleClear(object sender, ElapsedEventArgs e)
        {
            Console.Clear();
        }
    }
}

PM MAIL   Вверх
mr.Anderson
Дата 25.7.2009, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



SharpBeginner, поточнее. Что нужно получить и при чем здесь Timer. Что он должен тебе сделать?


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Экскалупатор
Дата 25.7.2009, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 5
Всего: 24



 smile SharpBeginner,  smile мой мозг взорвался.

по теме
а для чео все это? не проще ли вызвать сразу после 
Console.WriteLine("Моя первая программа. ");
Console.Clear();

и дальше  продолжить выполнять то что вам нужно?
PM MAIL ICQ   Вверх
SharpBeginner
Дата 25.7.2009, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 25.7.2009

Репутация: нет
Всего: нет



mr.Anderson, Timer должен вызвать метод Clear() через некоторое время (после показа заставки), а уже потом на чистой консоли будет работать програмка.

Экскалупатор, Нет не проще, т.к. Clear() очищает консоль раньше, чем появляется "Моя первая строка" , а точнее она вообще не появляется!

Я еще не волшебник, я только учусь! smile 
PM MAIL   Вверх
mr.Anderson
Дата 25.7.2009, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



Блин... если я правильно въехал... В событие срабатывания таймера пропиши
Код

Console.Clear();
Console.WriteLine("Test string.");

Сам таймер выключи. В основной проге:
Код

Console.WriteLine("The first string.");
Timer1.Enabled = true;



--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
SharpBeginner
Дата 25.7.2009, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 25.7.2009

Репутация: нет
Всего: нет



mr.Anderson, да так я уже пробовал не вышло  smile 
Код

Console.Clear();
Console.WriteLine("Test string.");

А когда выключаю таймер в основной проге то Console не очищается, короче Test string и first string отображаются вместе , что для меня не есть гуд. Я потому и воткнул туда второй таймер, думал поможет
PM MAIL   Вверх
Lunatic2009
Дата 25.7.2009, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 1.7.2009

Репутация: 1
Всего: 3



Насколько я знаю, таймер создает новый поток, т.е на этой строчке у Вас не приостанавливается выполнение программы:

Код

myTimer1.Start();


Это сообщение отредактировал(а) Lunatic2009 - 25.7.2009, 23:32
PM   Вверх
SharpBeginner
Дата 25.7.2009, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 25.7.2009

Репутация: нет
Всего: нет



Lunatic2009, Я с потоками пока что не знаком, но похоже что действительно не приостанавливается. Если я вызываю метод Timer.Stop() он срабатывает быстрее чем new Timer(3000)
PM MAIL   Вверх
Lunatic2009
Дата 25.7.2009, 23:46 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 1.7.2009

Репутация: 1
Всего: 3



Можно сделать так:

Код

static void Print()
{
    Console.WriteLine("First.");
}

static void Main(string[] args)
{
    Print();

    Thread.Sleep(3000); //Приостанавливается основной поток

    Console.Clear();
    Console.WriteLine("Second.");
    Console.ReadKey();
}



Это сообщение отредактировал(а) Lunatic2009 - 25.7.2009, 23:58
PM   Вверх
SharpBeginner
Дата 26.7.2009, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 25.7.2009

Репутация: нет
Всего: нет



Lunatic2009, Спасибо первый вариант как мне кажется весьма эффективен  smile .

PM MAIL   Вверх
Heinzz
Дата 27.7.2009, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 12.12.2008
Где: .net

Репутация: 3
Всего: 9



Код

class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Enabling timer");
            Timer timer = new Timer(3000);
            timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
            timer.Enabled = true;
            Console.ReadKey();
        }

        static void timer_Elapsed(object sender, ElapsedEventArgs e)
        {            
            Console.Beep();
            Console.WriteLine("Timer elapsed");
            ((Timer)sender).Enabled = false;
        }
    }


У Вас несколько запутанно получилось  smile 

Это сообщение отредактировал(а) Heinzz - 27.7.2009, 17:15


--------------------
user posted image
PM MAIL   Вверх
SharpBeginner
Дата 27.7.2009, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 25.7.2009

Репутация: нет
Всего: нет



Heinzz,  А это что такое???

 static void timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            Conjavascript:ubbc_wrapTags("
Цитата
\n","\n
");sole.Clear();
            Console.Beep();
            Console.WriteLine("Timer elapsed");
            ((Timer)sender).Enabled = false;
        }
PM MAIL   Вверх
Heinzz
Дата 27.7.2009, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 12.12.2008
Где: .net

Репутация: 3
Всего: 9



Извиняюсь, что-то с копипэйстом  smile исправил.



--------------------
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0539 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.