Рейтинг:
7
Sni.DelWoods
Отлично, это работает. Спасибо!
Между прочим:
Почему я должен использовать этот метод напрямую, а не использовать лямбду?
Как я вижу, метод .net имеет ту же сигнатуру: Run (Action action)
И почему я должен использовать лямбду, если мой метод использует параметры?
public static void DummyTask(string param) {...}
TestHelpers.Tasks.Run(() => TestTasks.CustomTasks.DummyTask("My parameter"));
TheRealSteveJudge
Пожалуйста.
Согласно документации, метод 'Run' имеет в качестве параметра объект типа 'Action'.
TestHelpers Свой '.Задачи.Метод Run также имеет объект типа action в качестве параметра.
Sni.DelWoods
Да, именно это я и обнаружил. Но почему я не могу использовать метод lambda ()=>?
Я ожидал, что нет никакой разницы между моей задачей.Бег и резьба.Задачи.Задача.Выполнить.
(Просто хочу понять, что здесь происходит...Некоторые вещи просто не укладываются у меня в голове...)
Richard Deeming
Task.Run(action)
- Возвращает
Task
который выполняет указанное действие.
Task.Run(() => action());
- Возвращает
Task
который выполняет анонимный метод, который выполняет действие.
Task.Run(() => action);
- Возвращает
Task<Action>
который выполняет анонимный метод, который
возвращается действие. Действие не выполняется.
TheRealSteveJudge
TestHelpers.Tasks.Run(new Action(TestTasks.CustomTasks.DummyTask));
это то же самое, что
TestHelpers.Tasks.Run(TestTasks.CustomTasks.DummyTask);
В
Task.Run(() => TestTasks.CustomTasks.DummyTask());
у вас есть скобки.
Нет необходимости писать " новое действие(TestTasks.Пользовательские задачи.DummyTask)' так как это избыточное явное создание делегата.