【发布时间】:2021-01-26 00:01:08
【问题描述】:
我使用以下方法从数据库中获取一些数据:
public async Task<ICollection<Medikation>> GetMedikamentTask(string dbId)
{
var medikamentSet = await _medikationApiService.GetMedikationSet(selector, dbId);
var responsefiltered = medikamentSet.Results.Where(c => c.Result != null).ToList();
return responsefiltered[0].Result.Medikation;
}
responsefiltered 是 Type List,但由于我必须使用 async/await,所以我的返回类型应该包含在 Task 中。 问题是,在下面的 GetMedikament 方法中,我使用了 taskLists.Any 或 OrderByDescending 之类的方法,所以我必须成为 ICollection 作为答案..
public WebhookResponse GetMedikament(WebhookRequest request, string dbId, int? mediId = null)
{
var taskLists = GetMedikamentTask(dbId);
cut code....
}
我尝试不使用异步方法,并调用了 .Result,但这不是解决此问题的正确方法。有人有想法吗?
【问题讨论】:
-
正确的方式又是:
await;如果您更改为public async Task<WebhookResponse> GetMedikament(...)和await它可以正常工作吗? (var taskLists = await GetMedikamentTask(dbId);)。从同步方法调用异步方法没有神奇的方法。 -
但是我的 WebhookResponse 包含在一个任务中
-
这是
async方法的行为,不管我们是否满意。它通常会导致传播到主函数,使其成为async Task,但在大多数情况下这是可以的。但是,如果您仍然对欺骗这种行为的方法感兴趣,那么您可以查看this post -
@FelipeLivingstone 是的!是的你将会;
async具有传染性 -
@Quacke 恐怕这是我的情况......我的主要功能应该只返回一个 WebhookResponse......而不是一个任务,我仍然不知道如何工作: /
标签: c# asp.net .net asynchronous async-await