不包含'GetAwaiter'的定义

6 c# async-await api-eveonline

我用下面的代码集得到了下面的错误,这是'alliancelookup'行上的错误,我不知道我做错了什么,但我自己也看不到任何东西.运行到顶部的查询似乎运行正常,但似乎我遇到的问题是与Awaiter,我想知道是否有办法解决这个问题?

DynamicCrest crest = new DynamicCrest();
var root = await crest.GetAsync(crest.Host);
var alliancelookup = await (await root.GetAsync(r => r.alliances)).First(i => i.shortName == e.GetArg("allianceticker").ToUpper());
allianceid = alliancelookup.id;
Run Code Online (Sandbox Code Playgroud)

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:'System.Dynamic.ExpandoObject'在System.Dynamic.UpdateDelegates.UpdateAndExecute1 [T0,TRet](CallSite)的CallSite.Target(Closure,CallSite,Object)中不包含'GetAwaiter'的定义网站,T0 arg0)at***.程序.<> c.<b__2_10> d.MoveNext()在C:\ Users ---\Documents\Visual Studio 2015\Projects ------\Program.cs :第95行

Ste*_*ary 6

如果没有一个最小的,完整的,可验证的例子,就不可能确切地知道什么是错的,但它看起来确实是你想要的await东西await.

拆分alliancelookup线:

// Asynchronously retrieve the alliances.
var alliances = await root.GetAsync(r => r.alliances);

// Synchronously get the first matching one.
var allianceLookup = alliances.First(i => i.shortName == e.GetArg("allianceticker").ToUpper());
Run Code Online (Sandbox Code Playgroud)

可能有更好的方法,将过滤器移动到异步代码中,但这取决于DynamicCrest.


Mos*_*fiz 0

您正在等待异步调用,因此必须将异步任务放在调用此代码的方法的开头

public async Task<returntyp> Name()
{
  DynamicCrest crest = new DynamicCrest();
  var root = await crest.GetAsync(crest.Host);
  var alliancelookup = await (await root.GetAsync(r => r.alliances)).First(i => i.shortName == e.GetArg("allianceticker").ToUpper());
  allianceid = alliancelookup.id;
Run Code Online (Sandbox Code Playgroud)

  • 如果没有“async”,则会出现编译错误,而不是运行时错误。 (7认同)