|
Проект на WinForms перехватить Console.WriteLine
|
|||
---|---|---|---|
#18+
Привет, форумчане! Я в своём проекте (WinForms Net Framework 4.6.2) использую стороннюю dll-сборку, установленную через NuGet Package Manager. Когда я смотрел исходники этой сборки, там в методах некоторых классов есть вызовы Console.WriteLine("строковое сообщение"). Как можно перехватить сообщения, отправляемые с помощью Console.WriteLine, так, чтобы я мог эти сообщения отобразить, например, в каком-нибудь TextBox моего проекта на WinForms? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2019, 10:41 |
|
Проект на WinForms перехватить Console.WriteLine
|
|||
---|---|---|---|
#18+
Новичок ООП.., Stdin\stdout в классе Console есть TextWriter и TextReader ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2019, 10:50 |
|
Проект на WinForms перехватить Console.WriteLine
|
|||
---|---|---|---|
#18+
Новичок ООП..Как можно перехватить сообщения, отправляемые с помощью Console Console.SetOut(TextWriter) Method Там и пример есть ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2019, 12:19 |
|
Проект на WinForms перехватить Console.WriteLine
|
|||
---|---|---|---|
#18+
Новичок ООП..там в методах некоторых классов есть вызовы Console.WriteLine("строковое сообщение"). Это заглушки, которые забыли выпилить из исходников ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2019, 14:49 |
|
Проект на WinForms перехватить Console.WriteLine
|
|||
---|---|---|---|
#18+
Cat2Это заглушки, которые забыли выпилить из исходниковнет, не заглушки. Там вполне осмысленная информация передаётся, ну и отладочные сообщения. Я понимаю, что Console.Write можно перенаправить в TextWriter но как потом из этого TextWriter извлечь строки и перекинуть их на TextBox ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2019, 15:16 |
|
Проект на WinForms перехватить Console.WriteLine
|
|||
---|---|---|---|
#18+
Новичок ООП.., для таких вещей есть логирование, которое можно настроить на вывода в stdout, в файл или куда угодно еще. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2019, 15:18 |
|
Проект на WinForms перехватить Console.WriteLine
|
|||
---|---|---|---|
#18+
Roman Mejtesкуда угодно ещемне не нужно куда угодно - мне нужно вывести текст в элемент управления "Мемо-поле" (здесь он называется TextBox) Вы можете привести пример кода, как из TextWriter вытащить накопленный там текст в TextBox ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2019, 16:06 |
|
Проект на WinForms перехватить Console.WriteLine
|
|||
---|---|---|---|
#18+
Новичок ООП..Roman Mejtesкуда угодно ещемне не нужно куда угодно - мне нужно вывести текст в элемент управления "Мемо-поле" (здесь он называется TextBox) Вы можете привести пример кода, как из TextWriter вытащить накопленный там текст в TextBox ? На форме только TextBox с именем textBox1, конечно такой вариант не очень хороший, так как я удерживаю постоянно ссылку на этот текст бокс и когда окно закроется, ссылка сохранится. Лучше сделать какую то перемычку и слабые ссылки или связывание, а текст форматировать в VM или как там у вас всё работает. Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2019, 16:34 |
|
Проект на WinForms перехватить Console.WriteLine
|
|||
---|---|---|---|
#18+
Новичок ООП..Cat2Это заглушки, которые забыли выпилить из исходниковнет, не заглушки. Там вполне осмысленная информация передаётся, ну и отладочные сообщения. Я понимаю, что Console.Write можно перенаправить в TextWriter но как потом из этого TextWriter извлечь строки и перекинуть их на TextBox ? а можно еще так, не проверял, но: пускаем приложение руками >app >myconsole.txt оно ставит файл на проверку на изменение, читает файл и, если изменился - текст из него выдает на контрол ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2019, 16:38 |
|
Проект на WinForms перехватить Console.WriteLine
|
|||
---|---|---|---|
#18+
Новичок ООП..Привет, форумчане! Я в своём проекте (WinForms Net Framework 4.6.2) использую стороннюю dll-сборку, установленную через NuGet Package Manager. Когда я смотрел исходники этой сборки, там в методах некоторых классов есть вызовы Console.WriteLine("строковое сообщение"). Как можно перехватить сообщения, отправляемые с помощью Console.WriteLine, так, чтобы я мог эти сообщения отобразить, например, в каком-нибудь TextBox моего проекта на WinForms? внести изменения в исходники ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2019, 17:02 |
|
Проект на WinForms перехватить Console.WriteLine
|
|||
---|---|---|---|
#18+
Roman Mejtes, Спасибо за ваш код - чуть позже попробую проверить его в работе. Кстати, будет ли он работать если в Console.Write фигачат из нескольких потоков (явно не UI-потоков) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2019, 17:36 |
|
Проект на WinForms перехватить Console.WriteLine
|
|||
---|---|---|---|
#18+
Изопропилвнести изменения в исходникив принципе это правильно, но дело вот в чём - код я взял у чувака с гитхаба - и что, если он будет вносить изменения (обновления), мне каждый раз лезть править исходники? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2019, 17:38 |
|
Проект на WinForms перехватить Console.WriteLine
|
|||
---|---|---|---|
#18+
Новичок ООП..Roman Mejtes, Спасибо за ваш код - чуть позже попробую проверить его в работе. Кстати, будет ли он работать если в Console.Write фигачат из нескольких потоков (явно не UI-потоков) ? сделайте Writer его потокобезопасным, обновляйте TextBox в UI потоке, добавьте StringBuilder в который вставляете новые строки, а потом этот StringBuilder выводите в TextBox. Так будет правильнее, я вам только пример кинул ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2019, 17:38 |
|
Проект на WinForms перехватить Console.WriteLine
|
|||
---|---|---|---|
#18+
Новичок ООП.., Заменить Console.WriteLine по всему проекту несложно Хуже будет, когда чувак прикрутит человеческий логгер. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2019, 20:25 |
|
Проект на WinForms перехватить Console.WriteLine
|
|||
---|---|---|---|
#18+
Изопропил, А, кстати, есть альтернатива этому Console.WriteLine? Если использую что-то от слова debug - сыпет в эвентсы, а мне удобно чтоб отдельно в аутпут - пишу в консоль. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2019, 00:25 |
|
Проект на WinForms перехватить Console.WriteLine
|
|||
---|---|---|---|
#18+
Roman Mejtes, Спасибо за ваш ответ, всё получилось объявил интерфейс Код: c# 1. 2. 3. 4.
ваш класс я переделал в более абстрактный вид Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
затем реализовал интерфейс IOutputMessage в форме Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
при загрузке формы вызывается метод Код: c# 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2019, 08:02 |
|
Проект на WinForms перехватить Console.WriteLine
|
|||
---|---|---|---|
#18+
iskatelsqlИзопропил, А, кстати, есть альтернатива этому Console.WriteLine? Если использую что-то от слова debug - сыпет в эвентсы, а мне удобно чтоб отдельно в аутпут - пишу в консоль. iskatelsqlИзопропил, А, кстати, есть альтернатива этому Console.WriteLine? Если использую что-то от слова debug - сыпет в эвентсы, а мне удобно чтоб отдельно в аутпут - пишу в консоль. Альтернатива - логгер, например nlog В качестве target можно использовать в частности MethodCall, FormControl, RichTextBox или создать свой target ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2019, 08:07 |
|
|
start [/forum/topic.php?fid=20&msg=39786063&tid=1399050]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
406ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 259ms |
total: | 768ms |
0 / 0 |