Xamarin.Forms를 사용하여 개발 된 기존 iOS 응용 프로그램이 있습니다. 이제 Android 및 Windows Phone으로 확장하고자합니다. 기존 응용 프로그램에서는 모든 웹 서비스 호출이 동 기적으로 수행됩니다. Windows phone은 비동기 호출 만 지원하므로 비동기 호출을 동기식으로 래핑하는 것이 좋습니다.Windows Phone 8에서 비동기 메서드를 동 기적으로 호출하는 방법
우리는 HttpClient.PostAsync 메서드를 사용하여 서비스에 액세스합니다. 실행이 PostAsync 메서드에 도달하면 전화가 끊깁니다. 다음과 같이 서비스를 호출하는 코드는 다음과 같습니다
private static async void CallService(System.Uri uri)
{
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Host = uri.Host;
client.Timeout = System.TimeSpan.FromSeconds(30);
HttpContent content = new StringContent("", Encoding.UTF8, "application/xml");
var configuredClient = client.PostAsync(uri, content).ConfigureAwait(false);
var resp = configuredClient.GetAwaiter().GetResult();
resp.EnsureSuccessStatusCode();
responseString = resp.StatusCode.ToString();
resp.Dispose();
client.CancelPendingRequests();
client.Dispose();
}
}
그래서 단지 내가 (false)를 ConfigureAwait를 구현,이 때문에 UI 스레드를 차단 알고 있지만 전혀 작동하지 않았다. 나는 System.Net.WebClient도 시도했지만 같은 결과를 보였다.
이제 Windows Phone 8에서이 비동기 호출을 동 기적으로 처리하도록 만드는 방법은 무엇입니까?
당신이해야 할 일은 컨텍스트 (스레드 풀)에서 실행되는 다음 줄로 이어질 수있는'.ConfigureAwait (false)'를 삭제하는 것입니다. http://msdn.microsoft.com/en-us/magazine/jj991977.aspx – MickyD