I'm not sure if it's avaliable in 2003, but in 2005 (well, .NET 2.0) theres a ParameterizedThreadStart rather than the usual ThreadStart.
As far as reading buffers go, what I usually do is have a timer on the worker thread set to 10 seconds. When it needs data, it fires an event or calls a delegate. This delegate was set up by the main thread (who created this worker thread) and gives it data when it asks for it.
If the worker thread ever needs to update the user interface, start the method with something like:
Code:
void OnWorkerNeedsBuffer(object sender, BufferEventArgs e)
{
if (this.InvokeRequired)
{
// If it gets to here, we're not in the UI thread
// I DON'T REMEMBER THE SYNTAX:
this.Invoke(OnWorkerNeedsBuffer, new object[] {sender, e});
return;
}
// If it gets to here, we must be in the UI thread, so it's safe to access the controls
e.Buffer = textBox1.Text;
}
I hope that's some help, lemme know if you need clarification.