| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Работа с потоками |
| Автор: Andy_ 11.11.2004, 10:09 |
| Так как раньше я писал только консольные приложения у меня возникла проблема при работе со своими функциями(dll) из GUI(.NET) приложения. Заключается она в след.: Как в среде .NET отловить stdin поток если происходит вызов функции из dll т.е. этот поток идёт от этой dll. Например есть длл на С: #include "stdafx.h" extern "C" __declspec(dllexport) int Test(); extern "C" __declspec(dllexport) int Test() { fprintf(stdout,"Hello users!\n"); return 1; } Далее я подгружаю её в свою консольную программу на C#: using System; using System.Runtime.InteropServices; namespace LoadLib { class Class1 { [DllImport ("mydll.dll")] public static extern int Test(); static void Main(string[] args) { try { Test(); //Вызываем функц. из длл и получаем stdin на консоль } catch(System.EntryPointNotFoundException e) { Console.WriteLine(e.Message); } } } } В результате получаю на консоль вывод "Hello users!", т.е. всё ок! Вопрос: Как мне поймать этот поток в моём GUI(.NET) приложении и перевести его, например в richTextBox или в MessageBox???? Я рассматривал класс System.IO.Stream, но там что то мне сложно сорентироваться. Заранее огромное пасибо за ответ. |
| Автор: stab 12.11.2004, 03:04 |
| Думаю стоит покапать в сторону System.Console. Там есть методы SetError, SetIn и SetOut, которые позволяют установить на поток свой System.IO.TextReader или System.IO.TextWriter. Добавлено @ 03:06 з.ы. в MSDN, кстати, примеры есть в топиках про SetIn, SetOut, ... |