Ok, so, first, don't post an answer that isn't actually an answer.
As an FYI, I created a form with just a RichTextBox, a Button, and a BackgroundWorker. Here's the code for it:
private void button1_Click_1(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync(richTextBox1);
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
RichTextBox caller = (RichTextBox)e.Argument;
string text = "Test";
if (caller.InvokeRequired)
{
caller.BeginInvoke(new MethodInvoker(delegate()
{
int selectionStart = caller.Text.Length;
caller.AppendText(text);
caller.SelectionStart = selectionStart;
caller.SelectionLength = text.Length;
caller.SelectionColor = Color.Red;
}));
}
}
It adds the string "Test" to the RichTextBox and makes the color red. So if it's not working for you, you're doing something wrong.