It would appear you are cross threading the application. You need to use delegates if you want other threads to be able to interact with user controls (even just reading them).
You could take advantage of this code snippet
Code Snippet
private void button1_Click(object sender, EventArgs e)
{
string[] A = {textBox1.Text,textBox2.Text};
backgroundWorker1.RunWorkerAsync(A);
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
string[] S = (string[]) e.Argument;
}
(source:
http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvcs/thread/47b693a3-1add-4fc7-8459-4232554c7131[
^])