Você deve sempre tentar usar um objeto composto com tipos concretos (usando padrão de design composto) em vez de uma lista de tipos de objetos. Quem se lembraria do que diabos é cada um desses objetos? Pense na manutenção do seu código mais tarde ... Em vez disso, tente algo como isto:
Public (Class or Structure) MyPerson
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address { get; set; }
public int ZipCode { get; set; }
End Class
E depois:
Dim person as new MyPerson With { .FirstName = “Joe”,
.LastName = "Smith”,
...
}
backgroundWorker1.RunWorkerAsync(person)
e depois:
private void backgroundWorker1_DoWork (object sender, DoWorkEventArgs e)
{
MyPerson person = e.Argument as MyPerson
string firstname = person.FirstName;
string lastname = person.LastName;
int zipcode = person.ZipCode;
}