![](/img/trans.png)
[英]HttpClient Task returning System.Threading.Tasks.Task`1[System.String] and not JSON as expected
[英]C# async Task<string> result as System.Threading.Tasks.Task 1[System.String]
我正在尝试返回一个链接结果以从另一个类中获取,但不太了解 Task<>。 我试图从中获得结果的地方是在另一个班级
在网上寻找答案,但除了我发现 Task 可能有用之外,并没有真正找到任何有用的东西,这是我目前的阶段,现在是凌晨 2:40,我很困惑
public static async Task<string> ImgurUpload()
{
ImgurImage streamImage = null;
using (MemoryStream ms = new MemoryStream(File.ReadAllBytes("test.png")))
{
streamImage = await AO023ASD.UploadImageAnonymous(ms, "1", "2", "3");
}
return streamImage.Link;
}
我期望一个 url 的输出:例如 www.urlresult.com/123123.png 但实际输出是 System.Threading.Tasks.Task1[System.String]
您的函数返回一个Task<String>
。 如果你想要Task
的输出,你需要等待Task
完成,然后从对象中获取结果。 这可能看起来像:
var task = ImgurUpload();
task.Wait();
Console.WriteLine(task.Result);
如果您的调用方法也是async
,您可能更愿意await task
- 这样您的调用方法也会暂停其执行,直到任务完成并将控制权交还给其调用者。 await
自动返回任务的结果。
var task = ImgurUpload();
Console.WriteLine(await task);
或者,如果您实际上不需要异步方法,您可以立即等待图像上传的结果并保持您的方法同步:
public static string ImgurUpload()
{
ImgurImage streamImage = null;
using (MemoryStream ms = new MemoryStream(File.ReadAllBytes("test.png")))
{
streamImage = AO023ASD.UploadImageAnonymous(ms, "1", "2", "3")
.GetAwaiter().GetResult(); //This gives the same result as using
//.Wait() and .Result, but in one line
}
return streamImage.Link;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.