전체 .NET 프레임 워크에서 WP7 버전으로 일부 코드를 이식 중이며 동기식 비동기 호출과 관련된 문제가 발생합니다.Silverlight WP7에서 동기 호출 위조하기
string response;
string requestString = GenerateReqString();
HttpWebRequest req = (HttpWebRequest) WebRequest.Create("endpoint");
req.Method = "POST";
req.ContentType = "text/xml";
req.ContentLength = requestString.Length;
StreamWriter sw = new StreamWriter (req.GetRequestStream(), System.Text.Encoding.ASCII);
sw.Write(requestString);
sw.Close();
StreamReader sr = new StreamReader(req.GetResponse().GetResponseStream());
response = sr.ReadToEnd();
sr.Close();
응답 문자열은 메서드에서 반환 된 개체 목록으로 구문 분석됩니다.
내가 겪고있는 문제는 Silverlight/WP7에서 동 기적으로 전화를 걸 수있는 방법이 없다는 것입니다. 콜백을 사용하면 다른 함수에서 응답을 받고 원래 함수에서 응답을 반환 할 수 없습니다. 호출을 동 기적으로 수행하거나 콜백 함수에서 비동기 호출을 시작한 메소드로 돌아가는 방법이 있습니까?
ProcessWebResponseResult()가 문자열에서 개체를 만들고 DoSomethingAsync()를 호출하는 함수가 해당 개체를 반환해야한다고합니다. 그게 가능하니? – CACuzcatlan
그게 요점을 놓쳤습니다. DoSomethingAsync를 호출하는 메서드는 DoSomethingAsync에 함수를 전달합니다. 전달 된 함수는 "이 함수의 결과로 무엇을 할 것인가"입니다. 더 많은 것을 필요로 할 때, 당신은 당신의 콜 체인에 추가적인 연속 함수를 추가합니다. –
이것은 A(); B(); C();에 정상적으로 실행되는 프로그램을 생각하는 방법입니다. 그러나 '연속 전달 스타일'을 사용하여 실행하면 각 함수가 완료 될 때 무엇을해야하는지 알 수 있습니다. "이 함수에서 결과를 얻습니다"대신 "이 함수에 결과와 관련하여이 함수에 대리자를 통해 지시합니다."라고 말합니다. –