Недавно я вернулся на С# из области Objective-C, а ключевые слова async/wait в С# 5 выглядят круто. Но я все еще пытаюсь получить дескриптор правильного синтаксиса.
Я хочу объявить метод, который принимает асинхронный делегат в качестве параметра, но у меня возникают проблемы с правильной настройкой как вызывающего, так и синтаксического кода. Может ли кто-нибудь предоставить образец кода, показывающий объявление метода, вызов и вызов делегату?
Я думаю, что объявление будет выглядеть следующим образом. Обратите внимание, что эта функция не является асинхронной; т.е. его асинхронность не зависит от делегата.
void DoSomethingWithCallback(async delegate foo(int))
{
...
foo(42);
...
}
Вызов будет выглядеть примерно так:
DoSomethingWithCallback(async (int x) => { this.SomeProperty = await SomeAsync(x); });
Конечно, ни один из этих компиляций и большинство образцов, которые я видел, не предполагают, что у кого-то есть поле или свойство, которое делегат, а не анонимный делегат, который я хотел бы использовать.