我试图返回一个链接结果以从另一个类获取,但不太了解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;
}
我希望看到网址的输出:例如www.urlresult.com/123123.png,但实际输出是System.Threading.Tasks.Task1 [System.String]
答案 0 :(得分:0)
您的函数返回一个Task<String>
。如果要输出Task
,则需要等待Task
完成,然后从对象获取结果。可能看起来像:
var task = ImgurUpload();
task.Wait();
Console.WriteLine(task.Result);
如果您的调用方法也是async
,则您可能更喜欢await task
-这样,您的调用方法也将暂停其执行,直到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;
}