Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 27.12.2015
Сообщений: 1

Сложности при работе с перенаправленным выводом из консоли

29.07.2017, 17:51. Показов 1201. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня. Случилась такая заминка, ковыряюсь уже пару дней не могу разобраться. Буду благодарен за любую помощь. Задача достаточно тривиальная. Есть чужая программа, работающая в консоли и непрерывно выводящая на экран текст - результаты своей работы и диагностическую информацию. Задача - разработка под нее GUI. Вызываю программу из формы подписываюсь на событие обновления потока вывода и запускаю все это счастье в отдельном процессе,результат читаю по таймеру. Часть решения кстати взята отсюда с форума и там она помогала но у меня чего то не то.

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 System.Windows.Forms.Timer _timer;///////////
        StringBuilder _sb = new StringBuilder();///////
 
 
        private void Timer_Tick(object sender, EventArgs e)
        {
            string text;
            lock (_sb)
            {
                text = _sb.ToString();
                _sb.Clear();
            }
            if (text.Length > 0)
            {
                richTextBox1.Text += text;
            }
 
            if (_done)
            {
                _timer.Enabled = false;
                _timer.Tick -= Timer_Tick;
                _timer.Dispose();
                _timer = null;
            }
        }
 
void RunTest()
        {
            Process Test = new Process();
                   Test.StartInfo = new ProcessStartInfo
                    {
                        FileName = "C:/Test/Test.exe",
                        Arguments = "",
                        WorkingDirectory = "C:/Test/",
                        CreateNoWindow = true,
                        ErrorDialog = true,
                        RedirectStandardOutput = true,
                        StandardOutputEncoding = Encoding.GetEncoding("cp866"),
                        UseShellExecute = false
                    };
                    Test.OutputDataReceived += RedirectedDataRecevied;
                    Test.Start();
                    Test.BeginOutputReadLine();
                    Test.WaitForExit();
                    Test.OutputDataReceived -= RedirectedDataRecevied;
            }
 
void RedirectedDataRecevied(object sender, DataReceivedEventArgs args)
        {
            if (args.Data == null) return;
            lock (_sb)
            {
                _sb.AppendLine(args.Data);
            }
        }
 
private void button1_Click(object sender, EventArgs e)
        {
            _done = false;
            _timer = new System.Windows.Forms.Timer();
            _timer.Tick += Timer_Tick;
            // Интервал должен быть достаточно большим чтобы не подвешивать форму постоянными обновлениями
            _timer.Interval = 1000;
            _timer.Enabled = true;
            Thread procThread = new Thread(RunAvrDude);
            procThread.Start();
               }
Проблема в том, что при установке флага CreateNoWindow = true иногда процесс консольной программы умирает сразу, иногда работает но ничего не выводит. При установке в false вылазит окно в котором ничего нет (просто черная консоль) но когда ее закрываешь текст (причем правильный) за время ее работы появляется на форме. Сделал для теста свою консольную прогу которая просто по таймеру выводит текст на консоль с ней все работает идеально что с true что с false. Я перепробовал уже десяток вариантов, и этот лучший по работоспособности. Подскажите в чем может быть проблема и в какую сторону копать. Доступа к коду консольной программы нет, причем велика вероятность что придется в дальнейшем использовать и другие левые консольные приложения так что мне б идеально было найти универсальное решение по перенаправлению вывода в реальном времени.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.07.2017, 17:51
Ответы с готовыми решениями:

Проблема при работе с вводом/выводом в консоли
объясните пожалуйста, что здесь неправильного...Ввод просиходит только в а1 и б2, при этом в остальные переменные записывается непонятно...

Сложности при работе с библиотекой ZXing
Здравствуйте. Пытаюсь повторить описанный здесь пример программы по созданию qr-кодов: https://habrahabr.ru/sandbox/95109/ Сама...

MSI R5770 возникли сложности при работе co steam
Добрый день! Я приобрел видеокарту PCI-E, R5770, 1024 M, GDDR5, Fan Display PORT, HDMI, DVI-I/HDMI READY, Power Coble, Crossfire ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.07.2017, 17:51
Помогаю со студенческими работами здесь

Кодировка в консоли при работе с jdbc. Windows 10
Здравствуйте! Наблюдается проблема с кодировкой при работе с jdbc. Как исправить проблему?

Сложности с выводом отчета на печать
Добрый день! Возникает проблема с выводом отчета на печать (см.вложение рис.2). Сам отчет формирует данные правильно (см.вложение...

Ошибка в работе с поиском в консоли при выводе текстового файла
Добрый день! Помогите исправить ошибку, написал код, и казалось бы, всё работает, но при поиске необходимого слова из текстового файла, он...

При работе с графикой цвет текста в консоли упорно меняется на черный
Помогите пожалуйста :confusion: uses crt, graph; type TPoint = object x, y, color: word; constructor Init; ...

CentOs 5: при работе в консоли невозможен переход под другой login командой su...
CentOs 5. При работе в консоли на самом сервере невозможен переход под другой login командой su: при запросе пароля новой учетной записи...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru