我对 Async Await 概念有点陌生。在存储库中有以下方法
public TEntity Get(int id)
{
return Context.Set<TEntity>().Find(id);
}
我从另一个方法调用这个方法
BindingSource.DataSource = unitOfWork.ClientDemos.Get(newClient.ClientId);
我想将其异步化,因为这可能需要一段时间,具体取决于服务器速度等。我该怎么做呢?我累的每一种方式都给了我不同类型的错误。我不想用我错误的方法来打扰你们。但这是我尝试过但没有用的东西。
Task <IEnumerable<ClientDemographic>> tsk= new Task <IEnumerable<ClientDemographic> >(unitOfWork.ClientDemos.Get(newClient.ClientId));
tsk.Start();
BindingSource.DataSource = await tsk;
当没有要传递的参数且返回类型为 int 时,它会产生奇迹。像下面这样。这个效果很好。
Task<int> tsk = new Task<int>(unitOfWork.Complete);
tsk.Start();
rej = await tsk;
请说明一下这件事。我真的很感激! 干杯! 谢谢!
最佳答案
使用Task.Run
BindingSource.DataSource = await Task.Run(() => unitOfWork.ClientDemos.Get(newClient.ClientId));
您还应该阅读 Async/Await - Best Practices in Asynchronous Programming
关于c# - 带有参数的方法的异步等待问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45496468/