Асинк завершено событие с использованием Lambdas, а не реальный метод? - PullRequest
1 голос
/ 09 января 2011

В последнее время я довольно много программировал на Silverlight и любил его, но, конечно, Silverlight работает асинхронно, поэтому я вынужден настроить обработчик событий для вызова, когда асинхронизация завершена. Это прекрасно работает, конечно, но я просто получаю много кода ... в основном 2 метода для каждого вызова, который мне требуется для службы wcf. Я недавно обнаружил следующее

client.LoadClientsCompleted += (sender, e) =>
{
    // My Code
};

client.LoadClientsAsync(clientID);

Кажется, это работает, он использует лямбды, а не физический метод. Я понимаю, что это не меняет работу технологии и все еще асинхронно. но это, кажется, приводит в порядок мой код.

Я хотел бы услышать какие-либо комментарии о погоде, я должен использовать это, есть ли какие-либо плюсы и минусы, используя либо?

Как я уже сказал, событие непосредственно в новом методе также прекрасно работает, но технически у меня есть 2 метода для каждого вызова, который я делаю ... Код растет: -)

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

1 Ответ

3 голосов
/ 09 января 2011

Один большой профессионал в том, что лямбды могут захватывать значения переменных из своего окружения:

client.LoadClientsCompleted += (sender, e) => 
{
     // My Code 
     // your code can use clientID here
};
client.LoadClientsAsync(clientID); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...