Вы думаете о ленивой загрузке? Вы можете использовать Lazy<Task>
(который инициализирует задачу, но не ставит ее в очередь на выполнение).
var tasks = new Dictionary<Guid, Lazy<Task>>();
tasks.Add(Task1Guid, new Lazy<Task>(() => { whatever the 1st task is }));
tasks.Add(Task2Guid, new Lazy<Task>(() => { whatever the 2nd task is }));
void async RunTaskAsync(Guid guid)
{
await tasks[guid].Value;
}
Плохо:
`perl foo.pl`
$(perl foo.pl)
Почему это плохо? Из-за такого количества причин; прежде всего:
$(echo 'date +%s')
это могло бы работать; но это - просто действительно плохое представление того, что Вы ДЕЙСТВИТЕЛЬНО делаете здесь.bash
функции оболочки как расширение параметра, колотите ключевые слова и т.д.Хороший, но неудобный:
perl foo.pl > mytmpfile; bash mytmpfile
При создании временного файла для помещения вывода сценария жемчуга в и затем выполнении этого с работами удара но это неудобно, поскольку необходимо создать (и вымыться!) Ваш временный файл и имеют его в портативно перезаписываемый (и безопасный!) местоположение.
Также не забудьте не использовать .
или source
выполнить временный файл, если Вы действительно не намереваетесь выполнить все это в активной оболочке. Кроме того, когда Вы используете .
или source
, Вы не сможете надежно очистить свой временный файл позже.
Вероятно, лучшее решение:
perl foo.pl | bash
Это довольно безопасно всесторонний ("безопасный" в контексте, наименее склонный к ошибке) принятие Ваших выводов сценария жемчуга корректный синтаксис удара, конечно.
Альтернативы, которые делают в значительной степени то же самое:
bash < <(perl foo.pl)
bash <(perl foo.pl)
Учитывая файл жемчуга:
print "date";
следующая команда удара сделает это.
> $(perl qq.pl)
Mon Apr 6 11:02:07 WAST 2009
Но это выполняется в отдельной оболочке. Если Вы действительно хотите вызвать его в контексте текущей оболочки, сделайте это:
$ perl qq.pl >/tmp/qq.$$ ; . /tmp/qq.$$ ; rm -f /tmp/qq.$$
Mon Apr 6 11:04:59 WAST 2009
Я не думаю, что это точно, что Вы ищете, но, что я имею :-)
perl foo.pl > /tmp/$$.script; bash /tmp/$$.script; rm /tmp/$$.script
Удачи!