0

I used a async httpRequest in this function:

public static async Task<HttpContent> RegisterAysnc(Dictionary<String, String> keyValues) 
{
    var multForm = new MultipartFormDataContent();
    StringBuilder urlParameters = new StringBuilder();
    string imgPath = keyValues["avatarSource"];

    HttpClient client = new HttpClient();

    foreach (var kv in keyValues)
    {
        if (kv.Key == "avatarSource")
            continue;

        urlParameters.Append(String.Format("{0}={1}&", kv.Key, kv.Value));
    }

    FileStream fs = File.OpenRead(imgPath);
    multForm.Add(new StreamContent(fs), "photo", Path.GetFileName(imgPath));
    var registerURL = URL.registerUrl + urlParameters.ToString();
    var response = await client.PostAsync(registerURL, multForm);

    return response.Content;
}

and this function is called by another function:

private void RegisterBtn_Click(object sender, RoutedEventArgs e)
{
    ......
    var res = NetWork.RegisterAysnc(parameters);

    Console.WriteLine($"Response is: {res.Result}");
}

The server did receive the request from this function, but the Console.WriteLine() didn't work; I don't know how to receive the sync result of the response.

marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
Richard
  • 11
  • 2

1 Answers1

0

I have to add await keyword:

var res = await NetWork.RegisterAysnc(parameters);

If you want to get result synchronously, you can use .GetAwaiter().GetResult()

var res = NetWork.RegisterAysnc(parameters).GetAwaiter().GetResult();
Grigory Zhadko
  • 1,484
  • 1
  • 19
  • 33