Альтернатива BackgroundWorker, который принимает больше чем один аргумент?

Заключение в кавычки официальных документов в https://docs.python.org/2.0/ref/strings.html :

Без обиняков: Строковые литералы могут быть включены в соответствие одинарным кавычкам (') или двойные кавычки (").

, Таким образом, нет никакого различия. Вместо этого люди скажут Вам выбирать, какой бы ни разрабатывают, который соответствует контексту, и быть последователен . И я согласился бы - добавляющий, что бессмысленно попытаться придумать "соглашения" для этого вида вещи, потому что Вы только закончите тем, что смутили любых вновь прибывших.

32
задан Jeff Meatball Yang 17 July 2009 в 21:43
поделиться

5 ответов

Вы можете использовать замыкание (Lambda):

backgroundWorker.DoWork += (s, e) => MyWorkMethod(userName, targetNumber);

Или с синтаксисом делегата (анонимный метод):

backgroundWorker.DoWork += 
    delegate(object sender, DoWorkEventArgs e)
    {
        MyWorkMethod(userName, targetNumber);
    };
45
ответ дан 27 November 2019 в 20:26
поделиться

Что плохого в использовании типизированного объекта?

internal class UserArgs
{
    internal string UserName { get; set; }
    internal string TargetNumber { get; set; }
}

var args = new UserArgs() {UserName="Me", TargetNumber="123" };
startCallWorker.RunWorkerAsync(args);
12
ответ дан 27 November 2019 в 20:26
поделиться

Объект может быть списком, массивом или чем-то подобным. Просто сделайте свой объект своего рода контейнером, а затем приведите его в BackgroundWorker. Тем не менее, вам нужно убедиться, что вы всегда передаете один и тот же тип.

3
ответ дан 27 November 2019 в 20:26
поделиться

Может быть, передать лямбда-функцию как ваш объект? Затем вы вызываете его в обработчике DoWork.

endCallWorker.RunWorkerAsync(new Action( () => DelegatedCallTarget(userName, targetNumber) ));
2
ответ дан 27 November 2019 в 20:26
поделиться

Почему бы не передать "один" объект в виде массива параметров? Вам нужно только вернуть его обратно в массив внутри метода из параметра объекта.

0
ответ дан 27 November 2019 в 20:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: