आप एक StringWriter
की आवृत्ति Console.Out
अनुप्रेषित हैं, तो आप फिर पाठ कि कंसोल के लिए लिखा गया है प्राप्त कर सकते हैं:
StringWriter writer = new StringWriter();
Console.SetOut(writer);
StringBuilder consoleOut = writer.GetStringBuilder();
string text = consoleOut.ToString();
आप इस एक नया Form
भीतर करते हैं, आप तो मतदान कर सकते हैं कंसोल पर लिखे गए पाठ को प्राप्त करने के लिए अंतराल पर और अपना मान TextBox
में डाल दें। एक कच्चे उदाहरण:
public MyForm()
{
InitializeComponent();
StringWriter writer = new StringWriter();
Console.SetOut(writer);
Timer timer = new Timer();
timer.Tick += (o, s) => textBox.Text = writer.GetStringBuilder().ToString();
timer.Interval = 500;
timer.Start();
}
कुछ बातें
साथ सावधान रहना चाहिए:
StringWriter
डिस्पोजेबल है, इसलिए तकनीकी रूप से आप जब किया (हालांकि वास्तविकता में अपने Dispose()
विधि करता है यह के निपटान के लिए की जरूरत है कुछ भी नहीं तो वास्तव में एक बड़ा मुद्दा नहीं है)।
StringWriter
एक आंतरिक StringBuilder
रखता है जिसमें अब तक लिखा गया सभी पाठ शामिल है। यह कभी भी समय के साथ बड़ा हो जाएगा, इसलिए आपका आवेदन जितना लंबा होगा, उतना अधिक स्मृति इसका उपभोग करेगी। जब आप एक निश्चित आकार तक पहुंचते हैं तो आप समय-समय पर इसे साफ़ करने के लिए कुछ चेक डाल सकते हैं।
- यदि आप अंतराल को बहुत छोटा बनाते हैं, तो आप लगातार CPU का उपयोग करेंगे।
- जब आप अपना फॉर्म बंद करते हैं तो
Console.Out
अपने मूल मान पर वापस सेट करना सुनिश्चित करें, अन्यथा आप कंसोल पर संदेश प्रिंट नहीं कर पाएंगे।
आपके विस्तृत उत्तर के लिए धन्यवाद। मैं इसे एक शॉट दूंगा। –
मैंने अभी तक स्ट्रिंगबिल्डर स्मृति समस्या को ठीक नहीं किया है, लेकिन मूल रूप से, यह काम करता है। बहुत बहुत धन्यवाद। मुझे यहाँ से ठीक होना चाहिए। –
उत्कृष्ट उत्तर बीटीडब्ल्यू। –