gpt4 book ai didi

c# - 异步等待调用后的 Console.WriteLine。

转载 作者:太空狗 更新时间:2023-10-29 22:57:20 25 4
gpt4 key购买 nike

我完全不熟悉使用异步调用和等待。我有以下单元测试功能:

    public async static void POSTDataHttpContent(string jsonString, string webAddress)
{
HttpClient client = new HttpClient();
StringContent stringContent = new StringContent(jsonString);
HttpResponseMessage response = await client.PostAsync(
webAddress,
stringContent);

Console.WriteLine("response is: " + response);
}

测试完成且没有错误,但我从未在输出中看到 Console.WriteLine 打印语句 - 我不确定为什么。我一直在环顾四周,听起来我可能需要将其设置为一项任务?有人能给我指出正确的方向吗?

最佳答案

因为您已经在等待 HttpResponseMessage ,一个简单(且一致)的解决方案是返回 Task<HttpResponseMessage> .

var x = await POSTDataHttpContent("test", "http://api/");

public async Task<HttpResponseMessage> POSTDataHttpContent(
string jsonString, string webAddress)
{
using (HttpClient client = new HttpClient())
{
StringContent stringContent = new StringContent(jsonString);
HttpResponseMessage response = await client.PostAsync(
webAddress,
stringContent);

Console.WriteLine("response is: " + response);

return response;
}
}

也就是说,您还需要确保您的测试设置是正确的。您无法从同步测试中正确调用异步方法。相反,将您的测试标记为 async以及等待您正在调用的方法。此外,您的测试方法必须标记为 async Task同样,因为 MS Test Runner 和其他工具(NCrunch、NUnit)都无法正确处理异步无效测试方法:

[TestMethod]
public async Task TestAsyncHttpCall()
{
var x = await POSTDataHttpContent("test", "http://api/");
Assert.IsTrue(x.IsSuccessStatusCode);
}

关于c# - 异步等待调用后的 Console.WriteLine。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39520409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com