![](/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.