Alternative à BackgroundWorker qui accepte plus d'un argument?

Le BackgroundWorker objet nous permet de passer un seul argument dans le DoWorkEventHandler.

//setup/init:
BackgroundWorker endCallWorker = new BackgroundWorker();
endCallWorker.DoWork += new DoWorkEventHandler(EndCallWorker_DoWork);
...
endCallWorker.RunWorkerAsync(userName);

//the handler:
private void EndCallWorker_DoWork(object sender, DoWorkEventArgs e)
{
    string userName = e.Argument as string;
    ...
}

Pour passer plusieurs arguments, je doit les envelopper d'un objet, comme ce pauvre tableau de chaînes:

//setup/init:

BackgroundWorker startCallWorker = new BackgroundWorker();
startCallWorker.DoWork += new DoWorkEventHandler(StartCallWorker_DoWork);
...
startCallWorker.RunWorkerAsync(new string[]{userName, targetNumber});


//the handler:
private void StartCallWorker_DoWork(object sender, DoWorkEventArgs e)
{
    string[] args = e.Argument as string[];
    string userName = args[0];
    string targetNumber = args[1];
}

Est là un autre objet ou un modèle qui nous permet de passer plusieurs arguments bien, ou, idéalement, d'écrire notre propre signature?