我有一个非常简单的方法: -
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中找到了其他链接,我不确定问题是什么。
答案 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));
我想这是一种异步调用同步方法的方法