저는 여러 웹 서비스에 대해 여러 비동기 요청을하는 Silverlight 앱을 개발하고 있습니다. 모달 "로딩"대화 상자가 모든 요청이 완료 될 때까지 활성 상태를 유지하기를 원합니다. 나는 각 비동기 요청 시작 이벤트에서 증가하는 카운터 변수를 사용하여 상황을 관리하고 각 비동기 완료 이벤트를 감소시킨다 (나에게 안전하지 않은 스레드로 보임). 카운터가 0 일 때 UI에 바인딩 된 속성은 대화 상자를 끕니다. 내 카운터 솔루션보다이 문제를 다루는 더 좋고/더 일반적인 방법이 있습니까?여러 비동기 요청 동기화
3
A
답변
0
카운터 솔루션이 유효합니다. 무엇을 하든지, 모든 요청을 추적하고 그들이 언제 도착하는지 (카운트가 0이 될 때) 이해해야합니다.
완료되면 이벤트를 반환하는 일부 MultiAsyncWaiter 클래스에이 구현을 모두 넣는 것처럼 코드를 정리할 수 있습니다. 그러나 근본적인 영향은 동일하게 유지 될 것입니다 : 그들이 모두 돌아올 때까지 추적하십시오.
int의 스레드가 안전하지 않다고 말하는 것이 맞습니다. 연동 연산 (주석 참조)을 사용하거나 변수를 잠그면 구현 스레드를 안전하게 유지할 수 있습니다.
휘발성 키워드가 작동하지 않는 이유 : 여러 스레드가 변수를 변경하면 기술적으로 읽기 + 쓰기 작업 인 감소에 연동 작업이 필요합니다. 이것은 다른 스레드가 읽기와 쓰기 사이의 값을 변경할 수 있기 때문입니다.
관련 문제
- 1. 여러 비동기 URL 요청
- 2. ASIHTTP 요청 여러 비동기 요청 문제
- 3. 동기화 시나리오를 처리 할 여러 비동기 WebRequests
- 4. 자바 스크립트 : XHR 처리하지 여러 비동기 요청
- 5. Silverlight에서 순차적으로 여러 비동기 HTTP 요청 처리
- 6. C에서 비동기 호출 동기화
- 7. Java의 비동기 웹 요청?
- 8. Ajax 요청 동기화
- 9. Java 동기화 도움말 요청
- 10. 실패 ASIFormDataRequest로 비동기 요청
- 11. Ajax - 비동기 요청 문제
- 12. 비동기 아약스 요청
- 13. Yii 비동기 jsonp 요청
- 14. PHP의 비동기 HTTP 요청
- 15. 모바일 위젯에서 동기화 된 AJAX 요청
- 16. 여러 스레드 동기화
- 17. 비동기 PHP 요청 (AJAX 아님)
- 18. 동시에 여러 XHR 요청
- 19. Firefox 확장 : XMLHttpRequest를 사용한 여러 요청. 비동기 사용 여부
- 20. 별도의 스레드에서 비동기 URL 요청 사용?
- 21. PHP를 사용하는 비동기/병렬 HTTP 요청 curl_multi
- 22. 비동기 웹 요청 우수 사례
- 23. NSURLConnection을 통한 비동기 요청 : 릴리스시기
- 24. GIO를 사용하는 비동기 HTTP 요청
- 25. 일련의 http 비동기 요청 호출
- 26. Blackberry 비동기 HTTP 요청 - 어떻게?
- 27. 웹 서비스에 대한 비동기 요청
- 28. asp.net의 비동기 웹 요청 httphandler
- 29. 델리게이트가있는 PHP에서의 비동기 HTTP 요청
- 30. 비동기 크로스 도메인 GET 요청
int를 휘발성으로 만드는 것으로 충분하지 않습니다. Interlocked.Increment와 .Decrement를 사용하여 손실 된 업데이트를받지 않도록해야합니다 (http://msdn.microsoft.com/en-us/library/dd78zt0c). .aspx) –
감사합니다. 답변이 업데이트되었습니다. – santosc
답변 주셔서 감사합니다; 실버 라이트를 탑재 한 Rx 프레임 워크에 대해 알아 냈고 IObservable 인터페이스에서 ForkJoin() 메서드를 사용했습니다 (꽤 놀라운 내용입니다. http://www.minddriven.de/?p=563&cpage=). 1 # comment-4425) – gn22