2011-01-09 1 views
1

최근에 꽤 많은 실버 라이트 프로그래밍을하고 있었지만 사랑 스럽지만 실버 라이트는 비동기 적이기 때문에 비동기가 완료 될 때 호출하도록 이벤트 핸들러를 설정해야합니다. 이것은 물론 잘 작동하지만 코드를 많이 얻고 있습니다 ... 기본적으로 wcf 서비스를 필요로하는 everycall의 두 가지 메소드가 있습니다. 나는 최근에 다음을 발견했다.비동기 실제 방법이 아닌 Lambdas를 사용하여 완료된 이벤트입니까?

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

client.LoadClientsAsync(clientID); 

그것은 물리적 방법보다는 람다를 사용하는 것으로 보인다. 나는 이것이 기술의 작동과 그것의 비동기를 변화시키지 않는다는 것을 이해한다. 하지만 내 코드를 깔끔하게 정리하는 것처럼 보입니다.

날씨에 대한 의견을 듣고 싶습니다.이 기능을 사용해야합니다. PROS 및 CONS 중 하나를 사용하고 있습니까? 내가 직접하는 새로운 방법의 이벤트가 작동 점을 말하는 것처럼

큰뿐만 아니라하지만, 기술적으로 내가 만들 ... 코드는 람다 방식에서 내가 사용 :-)

성장 호출마다 2 가지 방법이 완료 될 때만 발생하지만 내 콜백 이벤트를 현재 메서드 내에서 유지하지 마십시오. 그것은 일을 쉽게 만드는 것처럼 보이지만이 방법에 문제가 있습니까?

답변

3

하나 개의 큰 프로 람다 자신의 주변에서 변수의 값을 캡처 할 수 있다는 것입니다 :

client.LoadClientsCompleted += (sender, e) => 
{ 
    // My Code 
    // your code can use clientID here 
}; 
client.LoadClientsAsync(clientID); 
+0

은 와우가 플러스! 그래, 내가 별도의 방법을 사용하는 경우 초기 방법에 있던 변수를 읽는 다른 방법을 찾아야 할 것입니다! 이건 내가 몰랐어! 감사! – Martin

+0

포함 된 범위에 대한 액세스를 얻는 것은 실제로 훌륭합니다. 일을 크게 단순화 할 수 있습니다. 컴파일러가 람다를 사용하여 상태를 유지하고 콜백에 전달할 필요가 거의 없습니다. . –

관련 문제