L'oggetto BackgroundWorker ci consente di passare un singolo argomento in DoWorkEventHandler.Alternativa a BackgroundWorker che accetta più di un argomento?
// 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;
...
}
passare più argomenti, io devo avvolgere in un oggetto, in questo povero array di stringhe:
// 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];
}
C'è un altro oggetto o modello che ci permette di passare più argomenti bene, o idealmente, scrivi la nostra firma?
potrebbe elaborare su come funziona? (in particolare "(s, e)" ... perché vengono dichiarati?) –
Mi piace molto - Per il mio caso d'uso, funziona benissimo, ma le app più complesse potrebbero avere problemi, cioè ho bisogno di accedere al parametro valori (username e targetNumber) a setup/init. –
Felice di aiutare (e qualche altro testo). –