2010-12-01 3 views
0

asp.net에서 Silverlight로 "천천히"이동 중이며 웹 서비스 호출이 완료된 후 일부 코드가 실행되어야하는 상황을 처리하는 방법에 대해 질문이 있습니다. 예를 들어 사용자가 데이터 그리드의 행을 클릭하면 레코드를 편집 할 수있는 대화 상자가 표시됩니다. 그것은 수많은 콤보 박스, 체크 박스 등을 포함하고 있습니다. 그래서 저는 각각의 콤보 박스에 대한 데이터를 먼저로드해야하며,로드가 완료되면 바인딩 된 엔티티를 설정해야합니다. 필자는이 비동기식 작업에 익숙하지 않았기 때문에 얼마나 많은 호출이 전달되었는지를 추적 할 수있는 일종의 카운터를 가질 생각이었습니다. 로드가 끝난 이벤트, 그리고 이것에 의존하는 것을 계속 진행할 수 있습니다. 그러나 이것은 그것을하기의 아주 clunky 방법 보인다. 나는이 문제에 많은 사람들이 직면했을 것이라고 확신합니다. 어떻게 그렇게합니까? 도움이된다면 Prism을 MVVM 접근 방식으로 사용하고 Ria Services를 Dtos와 함께 사용합니다.양식로드 중 표시기 및 통화 중 표시기

답변

0

당신이 묘사 한 내용은 꽤 많은 길입니다. 자물쇠 및 뮤텍스로 할 수있는보다 우아한 것들이있을 수 있지만 카운터가 작동합니다. 한 번에 얼마나 많은 작업이 "진행 중"인지 확인할 수있는 보너스가 있습니다.

이벤트를 순차적으로 디스패치 할 수는 있지만 비동기 작업의 모든 목적을 무효화 할 수 있습니다.

UI의 각 부분을 분석 한 경우 전에 모든 작업을 수행 할 수 있습니다. 비동기 이벤트가 모두 완료되었습니다. 가장 긴 실행 작업을 먼저 시작하는 것이 도움이 될 수 있지만 다른 짧은 작업이 먼저 완료된다고 보장 할 수는 없습니다. 그것은 모두 호출이 이루어질 때 클라이언트와 서버에서 사용할 수있는 리소스에 따라 다릅니다.

+0

SL에 내장 된 마법이 있다고 생각했습니다. 비동기 CTP에서 "대기"및 "비동기"를 사용할 수 있습니까? – epitka

+0

@epitka - 아직 찾지 못했다면. 비동기 CTP는 이런 종류의 문제를 해결할 수있을 것 같지만 - 만날 마감 기한이 있으며 v1.0이 아니기 때문에 사용할 수 없습니다. 우리는 새해에 도착해야합니다. – ChrisF