Заключение в кавычки официальных документов в https://docs.python.org/2.0/ref/strings.html :
Без обиняков: Строковые литералы могут быть включены в соответствие одинарным кавычкам (') или двойные кавычки (").
, Таким образом, нет никакого различия. Вместо этого люди скажут Вам выбирать, какой бы ни разрабатывают, который соответствует контексту, и быть последователен . И я согласился бы - добавляющий, что бессмысленно попытаться придумать "соглашения" для этого вида вещи, потому что Вы только закончите тем, что смутили любых вновь прибывших.
Вы можете использовать замыкание (Lambda):
backgroundWorker.DoWork += (s, e) => MyWorkMethod(userName, targetNumber);
Или с синтаксисом делегата (анонимный метод):
backgroundWorker.DoWork +=
delegate(object sender, DoWorkEventArgs e)
{
MyWorkMethod(userName, targetNumber);
};
Что плохого в использовании типизированного объекта?
internal class UserArgs
{
internal string UserName { get; set; }
internal string TargetNumber { get; set; }
}
var args = new UserArgs() {UserName="Me", TargetNumber="123" };
startCallWorker.RunWorkerAsync(args);
Объект может быть списком, массивом или чем-то подобным. Просто сделайте свой объект своего рода контейнером, а затем приведите его в BackgroundWorker. Тем не менее, вам нужно убедиться, что вы всегда передаете один и тот же тип.
Может быть, передать лямбда-функцию как ваш объект? Затем вы вызываете его в обработчике DoWork.
endCallWorker.RunWorkerAsync(new Action( () => DelegatedCallTarget(userName, targetNumber) ));
Почему бы не передать "один" объект в виде массива параметров? Вам нужно только вернуть его обратно в массив внутри метода из параметра объекта.