Как сделать обычный WebRequest асинхронным и ожидаемым?

Мне нужно сделать следующий код асинхронным и ожидаемым.

Мне нужно получить много данных с веб-сервера, и затем эти данные будут использоваться для заполнения страницы xaml в моем приложении.

Итак, мне нужно, чтобы метод DefLogin () был ожидаемым.

Является ли это возможным?

public void DefLogin()
    {
        postData = "My Data To Post";
        var url = new Uri("Url To Post to", UriKind.Absolute);
        webRequest = WebRequest.Create(url);
        webRequest.Method = "POST";
        webRequest.ContentType = "text/xml";
        webRequest.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), webRequest);
    }

    public void GetRequestStreamCallback(IAsyncResult asynchronousResult)
    {
        webRequest = (HttpWebRequest)asynchronousResult.AsyncState;
        Stream postStream = webRequest.EndGetRequestStream(asynchronousResult);
        byte[] byteArray = Encoding.UTF8.GetBytes(postData);
        postStream.Write(byteArray, 0, byteArray.Length);
        postStream.Close();
        Debug.WriteLine("Start BEGINGetResponse");
        webRequest.BeginGetResponse(new AsyncCallback(GetResponseCallback), webRequest);
    }

    public void GetResponseCallback(IAsyncResult asynchronousResult)
    {
        try
        {
            HttpWebRequest webRequest = (HttpWebRequest)asynchronousResult.AsyncState;
            HttpWebResponse response;
            response = (HttpWebResponse)webRequest.EndGetResponse(asynchronousResult);
            Stream streamResponse = response.GetResponseStream();
            StreamReader streamReader = new StreamReader(streamResponse);
            string Response = streamReader.ReadToEnd();
            streamResponse.Close();
            streamReader.Close();
            response.Close();
            if (Response == "")
            {
                //show some error msg to the user        
                Debug.WriteLine("ERROR");

            }
            else
            {
                //Your response will be available in "Response" 
                Debug.WriteLine(Response);
            }
        }
        catch (WebException)
        {
            //error    
        }
    }

Я видел этот вопрос на StackOverflow:Преобразование обычного веб-запроса Http Post с помощью Async и Await, но я не мог правильно понять ответ.

Пожалуйста, кто-нибудь может помочь? Буду очень признателен!

Ответы на вопрос(1)

Ваш ответ на вопрос