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?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un dispositif de fermeture (Lambda):
Ou avec des délégué (méthode anonyme) syntaxe:
Quel est le problème avec l'aide d'un tapé objet?
plutôt typé objet. C# 4.0 nous offre n-uplet. Nous pourrions utiliser un tuple d'avoir plusieurs arguments. Il n'est pas nécessaire de déclarer une nouvelle classe.
Objet peut être une liste ou un tableau ou quelque chose du genre. Faites votre objet un conteneur de quelque sorte, alors coulé dans le BackgroundWorker. Vous devez vous assurer que vous êtes en passant toujours dans le même type de bien.
Peut-être passer à une fonction lambda que votre objet? Alors vous souhaitez appeler dans la DoWork gestionnaire.
Créer une classe qui contient tous vos arguments
Pourquoi ne pas avoir "un" objet passé en être un tableau de paramètres? Vous avez seulement besoin de le jeter en arrière à tableau à l'intérieur de la méthode de l'objet en paramètre.