我怎样才能简化这个方法
本文关键字:方法 | 更新日期: 2024-09-20 22:44:55
在这个问题中,我问如何使我使用的实用程序方法可用。我的问题的答案是:
public async Task<TResult> TryAsync<TResult>(Func<IDataServices, Task<TResult>> method)
{
using (IDataServices client = GetClient())
{
return await method(client);
}
}
上面是这样称呼的:
Model m = await ClientResolver.TryAsync(async x => await x.GetModelByIDAsync(modelID));
光是看着这个装置,我就想知道它怎么可能高效。我在这里等了三次,以免自己写使用声明的麻烦。有没有更好的方法,也许通过IAwaitable?我经常使用这个结构,所以我认为一点优化会有很大的帮助。我在我的应用程序中使用异步等待已经走得很远了,我真的开始觉得尾巴在摇狗。但这是另一天的故事。
您应该可以只使用
Model m = await ClientResolver.TryAsync(x => x.GetModelByIDAsync(modelID));
你的TryAsync
方法已经有了await
。我认为如果你想优化它,你需要对它进行分析,看看问题在哪里。一种可能的优化可能是跨类重用客户端。
您还可以通过在TryAsync
中使用ConfigureAwait(false)
来避免切换到主上下文,这可能会有所帮助,但性能增益非常小。
public async Task<TResult> TryAsync<TResult>(Func<IDataServices, Task<TResult>> method)
{
using (IDataServices client = GetClient())
{
return await method(client).ConfigureAwait(false);
}
}