Допустим, я хочу отправить параметр int фоновому работнику, как это можно сделать?
private void worker_DoWork(object sender, DoWorkEventArgs e) {
}
Я знаю, когда это - worker.RunWorkerAsync (); я не понимаю, как определить в worker_DoWork, что он должен принимать параметр int.
c#
backgroundworker
sooprise
источник
источник
Tuple<A,B>
(C # 4 +) (Правка: Да, используйте объект, чтобы упаковать все это. Смотрите, например, DoWorkEventArgs self).label1.Text = e.Result.ToString();
везде я отмечал это как безопасный.Несмотря на то, что это уже отвеченный вопрос, я бы оставил еще один вариант, который намного проще читать по ИМО:
И по методу обработчика:
источник
... => WorkerDoWork(a, b, c);
... WorkerDoWork(int a, string b, string c) {...
Вы можете передать несколько аргументов, как это.
источник
Tuple
(или специализированный класс), а не список общих объектовВы можете использовать
DoWorkEventArgs.Argument
собственность.Полный пример (даже с использованием аргумента int) можно найти на сайте Microsoft:
источник
Проверьте свойство DoWorkEventArgs.Argument :
источник
Вы можете попробовать это, если хотите передать более одного типа аргументов, сначала добавьте их все в массив типа Object и передайте этот объект в RunWorkerAsync (), вот пример:
Теперь в doWork метод фонового работника
источник
Вам нужен метод RunWorkerAsync (объект) и свойство DoWorkEventArgs.Argument .
источник
Вы всегда должны пытаться использовать составной объект с конкретными типами (используя составной шаблон проектирования), а не список типов объектов. Кто бы помнил, какого черта каждый из этих объектов? Подумайте об обслуживании вашего кода позже ... Вместо этого попробуйте что-то вроде этого:
А потом:
а потом:
источник