A: 

No idea why this happeneds. But if you want to process the result try the following:

    void a_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        ProcessResult((string) e.Result);
    }

    public delegate void ProcessResultDelegate(string result);
    void ProcessResult(string result)
    {
        if (textBox1.InvokeRequired)
        {
            var d = new ProcessResultDelegate(ProcessResult);
            d.Invoke(result);
        }
        else
        {
            textBox1.Text = result;
        }
    }
rdkleine
That looks like it should work, however it still is on the worker thread. Don't know what's going on!