没有扩展方法' GetAwaiter'接受第一个参数

时间:2017-04-25 15:57:46

标签: c#

我有一个非常简单的方法: -

public async Task<XrmActivity> GetById(Guid id)
{
   return await this.GetById<XrmActivity>(id, "activityid", fetchXml);
}

但是我收到以下错误: -

  

&#39; XrmActivity&#39;不包含&#39; GetAwaiter&#39;的定义没有扩展方法&#39; GetAwaiter&#39;接受第一个类型&#39; XrmActivity&#39;可以找到(你错过了使用指令或程序集引用吗?)

发生了什么事?请帮忙。我在Stack Overflow中找到了其他链接,我不确定问题是什么。

2 个答案:

答案 0 :(得分:1)

  

发生了什么事?

this.GetById<XrmActivity>(id, "activityid", fetchXml)正在返回XrmActivity,这不是一个等待的类型。因此,您无法将其与await一起使用。

要解决,请:

  • 更改GetById(Guid, string, typeof(fetchXml))以返回Task<XrmActivity>而不是XrmActivity,或者:
  • GetById(Guid)更改为同步,即public XrmActivity GetById(Guid id) => GetById<XrmActivity>(id, "activityid", fetchXml);

答案 1 :(得分:-1)

我是C#的新手,所以我无法解释为什么这可能起作用,但是它对我有用。我确实在在线教程中找到了这种方法。尝试return await Task.Run(() => this.GetById<XrmActivity>(id, "activityid", fetchXml));

我想这是一种异步调用同步方法的方法