Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
гроза ленивых студентов
 Аватар для znake
456 / 411 / 51
Регистрация: 27.03.2011
Сообщений: 823

Открытие консоли в WFA при использовании класса Debug

15.05.2011, 15:42. Показов 2321. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ковыряюсь с классом Debug, возник вопрос...

пишем вот так
C#
1
2
3
4
5
            TextWriterTraceListener listener = new TextWriterTraceListener(@"c:\debug.txt");
            Debug.Listeners.Add(listener);
            Debug.AutoFlush = true;
            for (int i = 0; i < 1000; i++)
                Debug.WriteLine(i.ToString());

запускаем и радуемся - в файлик попадает интересующая нас информация...

делаем аналогичный код в консольном приложении - то же самое, работает як часы...
в консоли при этом есть еще вариант вывода в саму консоль...
код
C#
1
2
3
4
5
6
7
8
9
            ConsoleTraceListener listener = new ConsoleTraceListener();
            Debug.Listeners.Add(listener);
            for (int i = 0; i < 1000; i++)
                Debug.WriteLine(i.ToString());
//или
            TextWriterTraceListener listener = new TextWriterTraceListener(System.Console.Out);
            Debug.Listeners.Add(listener);
            for (int i = 0; i < 1000; i++)
                Debug.WriteLine(i.ToString());


вопрос такой: есть ли варианты в WinForms запустить консоль и в нее писать Debug информацию?

я пробовал:
1) ConsoleTraceListener - консоль не появляется
2) TextWriterTraceListener(System.Console.O ut) - консоль не появляется
3) такой вариант:
C#
1
2
3
4
5
            prc = Process.Start("cmd.exe");
            TextWriterTraceListener listener = new TextWriterTraceListener(prc.StandardInput);
            Debug.Listeners.Add(listener);
            for (int i = 0; i < 10; i++)
                Debug.WriteLine(i.ToString());
на компиляции всё хорошо, при выполнении на второй строке кидает InvalidOperationException - "Поток StandartInput не был перенаправлен"... подозреваю, что если его перенаправить, то всё может получиться, но... я не знаю как это сделать

работает такой вариант:
1) создать WinForms приложение
2) перейти в его свойства и тип выходных данных поменять на "Консольное приложение"
3) код такой же как и для работы с обычной консолью
но у такого варианта два недостатка:
- консоль запускается вместе с приложением и постоянно висит (Show/Hide у нее нема)
- две, три таких консоли не открыть

в общем, надеюсь, что кто-то знает, что можно придумать

Добавлено через 17 минут
Цитата Сообщение от znake Посмотреть сообщение
на компиляции всё хорошо, при выполнении на второй строке кидает InvalidOperationException - "Поток StandartInput не был перенаправлен"... подозреваю, что если его перенаправить, то всё может получиться, но... я не знаю как это сделать
с этим разобрался, сделал так:
C#
1
2
3
4
5
            Process prc = new Process();
            prc.StartInfo.FileName = "cmd.exe";
            prc.StartInfo.UseShellExecute = false;
            prc.StartInfo.RedirectStandardInput = true;
            prc.Start();
тогда runtime ошибок не возникает на строке:
C#
1
TextWriterTraceListener listener = new TextWriterTraceListener(prc.StandardInput);
но легче от этого не становится, т.к. при таком варианте консоль открывается и тут же закрывается...

в общем - еще один опробованный и не сработавший вариант...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.05.2011, 15:42
Ответы с готовыми решениями:

Ошибка при использовании debug
при использовании debug в codeblocs в консоли высвечивается ошибка,как её исправить? oc:linux ubuntu 14.04

Debug ошибки при использовании AJAX, как?
только начал изучать AJAX. Везде и у всех свои варианты, как им пользоваться. Я выбрал, как мне кажется самый простой. Но даже он выдаёт...

Android release keys debug и отладка при использовании платежей
Всем доброго дня! Есть ли возможность отладить приложение в котором реализована подписка/платежи ??? Суть проблемы в том что...

3
 Аватар для umnick_kh
311 / 249 / 44
Регистрация: 06.12.2010
Сообщений: 527
15.05.2011, 16:29
Так можно вывести консоль на экран:
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
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
 
namespace ConsoleFromForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        [DllImport("kernel32.dll", SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool AllocConsole();
 
        [DllImport("kernel32.dll", SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool FreeConsole();
        private void Form1_Load(object sender, EventArgs e)
        {
            if (AllocConsole())
            {
                Console.WriteLine("Приведко,я консолько");
                Console.ReadLine();
                FreeConsole();
            }
        }
    }
}
1
гроза ленивых студентов
 Аватар для znake
456 / 411 / 51
Регистрация: 27.03.2011
Сообщений: 823
15.05.2011, 16:37  [ТС]
umnick_kh, похоже то, что нужно! спасибо

на будущее, может кому понадобится:
C#
1
2
3
4
5
6
            AllocConsole();
            ConsoleTraceListener console = new ConsoleTraceListener();
            Debug.Listeners.Add(console);
            for (int i = 0; i < 1000; i++)
                Debug.WriteLine(i.ToString());
            FreeConsole();
и не забыть про
C#
1
2
3
4
5
6
7
        [DllImport("kernel32.dll", SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool AllocConsole();
 
        [DllImport("kernel32.dll", SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool FreeConsole();
0
 Аватар для umnick_kh
311 / 249 / 44
Регистрация: 06.12.2010
Сообщений: 527
15.05.2011, 16:39
Поюзал поиск и честно скопипастил отсюда , так что спасибо не мне.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.05.2011, 16:39
Помогаю со студенческими работами здесь

Почему при использовании SetConsoleTextAttribute меняется цвет всей консоли?
Когда использую функцию SetConsoleTextAttribute для того что бы задать цвет текста который печатаю, цвет всей консоли почему то принимает...

Баг при использовании класса string при записи в бинарный файл
При записи в бинарный файл пользовательского класса, всё отлично отрабатывает, но, если в классе использовался класс string, то в конце...

Закрытие консоли и открытие формы при выполнении условия
Доброго времени суток. Вопрос такой: можно ли закрыть консоль(полностью) и открыть форму, например если пользователь введёт...

Ошибка при использовании класса
Решил написать чат. Написал маленький класс сервера: class ServChat { private: unsigned int unNumber; unsigned int umNumber; ...

Мусор при использовании класса Marshal
Здравствуйте, форумчане. Имеется тестовая функция на С++ которая возвращает строку в код на С#. Но есть небольшой баг который я не могу...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru