我在具有此签名的可移植类库中有一个异步方法:
private async Task<T> _Fetch<T>(Uri uri)
它获取一个作为具体类型 T 回退的资源。
我正在使用需要 a作为参数之一的第 3 方缓存库 ( AkavacheFunc<T>
),并尝试以这种方式这样做:
await this.CacheProvider.GetOrCreateObject<T>(key,
async () => await _Fetch<T>(uri), cacheExpiry);
这会导致错误:
无法将异步 lambda 表达式转换为委托类型“
System.Func<T>
”。异步 lambda 表达式可能返回或void
,它们都不能转换为 ' '。Task
Task<T>
System.Func<T>
我已经尝试了各种Func<T>
分配排列但没有任何运气,我可以让代码工作的唯一方法是进行Func<T>
阻塞:
await this.CacheProvider.GetOrCreateObject<T>(key,
() => _Fetch<T>(uri).Result, cacheExpiry);
这使我的应用程序陷入僵局。
关于我会误入歧途的任何指示?