Когда я запускаю BackgroundWorker
, я могу передать произвольный аргумент :
backgroundWorker1.RunWorkerAsync(someStuff);
Предполагается, что этот произвольный аргумент будет передан методу DoWork
:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
Object someStuff = e.Argument;
...
}
Теперь я хотел бы получить тот же аргумент во время обратного вызова Complete :
private void backgroundWorker1_RunWorkerCompleted(object sender,
RunWorkerCompletedEventArgs e)
{
Object myStuff = e.Argument;
...
}
За исключением того, что не e.Argument
.
Там есть a UserState
:
private void backgroundWorker1_RunWorkerCompleted(object sender,
RunWorkerCompletedEventArgs e)
{
Object myStuff = e.UserState;
...
}
Но это известная ошибка, что UserState
никогда не устанавливается или не устанавливается ни к чему.
Итак, что такое хороший обходной путь?
Чтение бонусов