问题似乎出在您调用GetTopHashtagMediaListAsync 的方式上。这与这个特定的API无关,而是对如何在C#中使用Tasks的误解。
先提醒一下:在 SO 上发布与代码相关的问题时,请尽可能以文本而不是图像的形式提供代码和错误/异常。如果能以文本格式查看您的代码,那就太好了。
无论如何...以下返回Task<IResult<InstaSectionMedia>>:
InstaApi.HashtagProcessor
.GetTopHashtagMediaListAsync("plant", PaginationParameters.MaxPagesToLoad(1));
但是,您在其上调用Wait(),它不会返回值(返回类型void),而是阻止当前线程等待Task 完成。这样做你也会失去对任务的引用。一种解决方案(虽然不是正确的解决方案,但仅用于说明目的)是将其拆分为三个步骤:
// Get/start the task
var task = InstaApi.HashtagProcessor
.GetTopHashtagMediaListAsync("plant", PaginationParameters.MaxPagesToLoad(1));
// Wait for it to complete
task.Wait();
// Use the result
var result = task.Result;
// ...
如前所述,这不是一个很好的解决方案,因为您通过调用Wait() 实质上阻塞了当前线程,它占用了您的应用程序中的一个线程,除了等待之外什么都不做。使用Tasks 时,您通常希望await 它利用C# 中内置的异步功能(实际上您已经使用async 关键字为它准备了方法)。因此,处理代码的更好方法是将上述所有三个步骤合并到一个 await 语句中:
var result = await InstaApi.HashtagProcessor
.GetTopHashtagMediaListAsync("plant", PaginationParameters.MaxPagesToLoad(1));
这样,您可以让应用程序在等待任务完成时将线程用于其他事情。完成后,结果将分配给result,代码将从中断处继续。