El objeto BackgroundWorker nos permite pasar un solo argumento al DoWorkEventHandler.¿Alternativa a BackgroundWorker que acepta más de un argumento?
// 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;
...
}
pasar múltiples argumentos, debo envolverlos en un objeto, como este pobre matriz de cadenas:
// 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];
}
¿Hay otro objeto o patrón que nos permite pasar múltiples argumentos muy bien, o, idealmente, escribe nuestra propia firma?
Podría explicar cómo funciona esto? (especialmente el "(s, e)" ... ¿por qué están declarados?) –
Me gusta mucho - Para mi caso de uso, funciona muy bien, pero las aplicaciones más complejas pueden tener problemas, es decir, necesito acceder al parámetro values (username y targetNumber) en setup/init. –
Me alegra ayudar (y algo más de texto). –