c# - 带有参数的方法的异步等待问题

标签 c#

我对 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/

相关文章:

c# - 在接口(interface)级别强制执行 getter setter 访问

c# - 语音识别循环

c# - 单击过期链接如何在重置密码的上下文中工作

c# - 如何在 .NET CF C# 3.5 中连接到 wifi 网络

c# - 如何在 C# 中将字符串转换为位

c# - mysql从动态选择的2个单独日期中选择数据

c# - 转换不同的对象并在同一行中调用方法?

c# - 将离散的非 UTC 日期/时间部分转换为 UTC DateTimeOffset

c# - WPF,c# - 自定义文本框显示属性并实现数据触发

c# - .NET MVC Fire and Forget Method 也立即返回 View