Trabajador de fondo: informe el progreso con la matriz de cadenas

Necesito devolver múltiples valores de STRING de mi trabajador de fondo en cada ciclo, por lo que traté de usar el segundo parámetro de ReportProgress como matriz de cadenas. Ejemplo de código:

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
    string[] workerResult = new string[2];
    for (int i=0; i<someNumber; i++)
    {
        //do some heavy calculating
        workerResult[0] = "this string";
        workerResult[1] = "some other string";
        backgroundWorker1.ReportProgress(i, workerResult) // also tried workerResult[] and [2]
    }
}

private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
    string[] results = (string[])e.UserState;

    MessageBox.Show(results[0]); // line of error
    MessageBox.Show(results[1]); // line of error
}

Se compila, pero en tiempo de ejecución en el momento en que intento acceder a la cadena devuelta Userstate, aparece un error: "La referencia de objeto no está establecida en una instancia de un objeto".

ara mí, parece probable que algo esté mal al pasar el parámetro de matriz al delegado ProgressChanged, o en el método ProgressChanged al intentar establecer los valores de la matriz de resultados.

Respuestas a la pregunta(3)

Su respuesta a la pregunta