Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
roma095
1 / 1 / 6
Регистрация: 30.01.2014
Сообщений: 148
#1

События в консоле - C#

06.02.2014, 09:19. Просмотров 633. Ответов 6
Метки нет (Все метки)

Всем привет. Подскажите пожалуйста нубу. Есть консольное приложение в котором цикл. При наступлении события в цикле выводятся записи на экран или передается управление какому либо классу или методу. А как вообще организационно делается, что бы при наступлении какого либо события вызывался метод не прерывая основного цикла?

Приведу пример: Считывается содержимое файла циклом и в зависимости от содержимого выполняются методом и классом действия. Паралельно я хочу, чтобы у меня на экран выводилось текущее актуальное время(таймер например). Мне его надо до цикла в какой то поток убирать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2014, 09:19
Я подобрал для вас темы с готовыми решениями и ответами на вопрос События в консоле (C#):

Почему если делегат события определен в другом классе, то не получается создать генерацию события?
В проекте №1 объявлен делегат для события: delegate void...

Для чего использовать ключевое слово event в объявлении события, если события — это те же самые делегаты
Господа, скажите пожалуйста, для чего использовать ключевое слово event в...

Вызов события из другого события по нажатию клавиши
Всем привет! Есть кнопка на Windows.Forms, к ней привязано событие. Хочется,...

Вычисления в консоле
Доброго времени суток. Суть такая - в консоле человек вбивает например 1+1...

Как компилировать в консоле
Не могу понят как с компилировать код в Far(в консоле ) ? какие команды надо...

MVC паттерн в консоле
Написать программу на c# для работы с геометрическими фигурами. (задание на...

6
insite2012
Модератор
Эксперт .NET
4794 / 3753 / 1081
Регистрация: 12.10.2013
Сообщений: 10,991
Записей в блоге: 2
06.02.2014, 09:32 #2
Не совсем понял что требуется, приведу свой пример, скажете, то это или нет.
В программе в отдельном классе идет считывание файла, считывание происходит блоками. А вот для того, чтобы отобразить прогресс считывание применено событие, в классе каждый раз при считывание блока происходит событие, на которое подписана основная форма, и уже в форме обработчик этого события увеличивает прогрессбар. Именно это Вам требуется, развязать класс с формой?
0
roma095
1 / 1 / 6
Регистрация: 30.01.2014
Сообщений: 148
06.02.2014, 12:42  [ТС] #3
Речь идет про консоль. Давайте попробую объяснить еще раз. Я пытаюсь понять архитектуру.
Как сделать так, что бы в консоле были паралельные действия. Например выводится меняющаяся информация из текстового файла и паралельно чтобы выводилось текущее время. Паралельно еще что то ослеживалось бы.
Просто в моем понимании все шаги в скрипте делаются последовательно и потом возвращаемся в первую точку. Получается последовательно, а не паралельно. Полагаю что это медленно
0
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
06.02.2014, 12:49 #4
В консоли диалогом управляет пользователь, а не события.
0
roma095
1 / 1 / 6
Регистрация: 30.01.2014
Сообщений: 148
06.02.2014, 13:45  [ТС] #5
То есть получается я не могу вывести изменяющееся текущее время, кроме как поставить его в цикл?
0
insite2012
Модератор
Эксперт .NET
4794 / 3753 / 1081
Регистрация: 12.10.2013
Сообщений: 10,991
Записей в блоге: 2
06.02.2014, 14:10 #6
Ну и в консоли можно события сделать, в чем проблема-то...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
 
namespace ConsoleApplication1
{
    class Program
    {
        delegate void MyEvent();
        static event MyEvent OnDone;
 
        static void Main(string[] args)
        {          
            OnDone+=new MyEvent(Done);
            for (int i = 0; i < 100000; i++)
            {
                Console.WriteLine(i);
                Thread.Sleep(20);
                if ( i%20 ==0)
                    OnDone();
            }
        }
        static void Done()
        {
            MessageBox.Show("А вот и событие!");
        }      
    }
}
0
Kruds
694 / 694 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
Завершенные тесты: 1
06.02.2014, 14:20 #7
Вывод времени без циклов:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System;
using System.Threading;
 
class Program
{
    static Timer t = new Timer((x) => { 
                                        Console.Clear(); 
                                        Console.WriteLine(DateTime.Now.ToString("HH:mm:ss")); 
                                        }, null, 0, 1000);
 
    static void Main()
    {
        Console.Read();
    }
}
0
06.02.2014, 14:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2014, 14:20
Привет! Вот еще темы с решениями:

Нажатие клавиш в консоле
using System; using System.Collections.Generic; using System.Linq; using...

Альтернатива OpenFileDialog в консоле
Доброго времени суток, всем обывателям форума. Такой вопрос, есть ли какая-то...

глобальная переменная в консоле
namespace md5easyTest { class Program { public int i = 1; ...

Ввод строк в консоле
Доброй ночи, помогите реализовать ввод строк в массив. Пример такой: 3 3 cba...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru