title: High Volume, High Speed Textbox in .Net
body: <p>I am writing an application that will display <strong>serial/USB data</strong> at a rate of up to <strong>250kb/sec</strong>. I am using the .net <strong>SerialPort</strong> class and reacting to the <code>DataReceived</code> event. For early implementations of this software, I simply stored the incoming data in a <strong>WinForms <code>RichTextBox</code></strong>. This solution works fine until there are <strong>50k - 100k lines</strong> in the control, at which point the application bogs down. Since then, I've tried accomplishing my goals with <strong>WPF</strong> and found the same problem. I tried, at one point, to keep only the <strong>currently visible text</strong> in the textbox, and store the rest in a <strong>large <code>List&lt;string&gt;</code></strong> but this solution required a huge number of workarounds and, in the end, was abandoned - <strong>I'd rather not reinvent the wheel</strong>.</p>
  
  <p>Now I come to you for a thread of hope - I am willing to try <strong>anything</strong>! Should I use a <strong>custom control</strong> (both pay and free controls are welcome)? <strong>SQLite</strong>? <strong>Virtualization</strong> as described above? Should I try <strong>polling the SerialPort</strong> instead of reacting to events?</p>