在同一方法上提供同步和异步版本的最佳方法是什么?

时间:2018-08-03 11:34:50

标签: c# entity-framework-6 task

我的存储库CountAsync (Expression <Func <TModel, bool> predicate)Count (Expression <Func <TModel, bool >> predicate)中有两种方法 我想实现一个而第二个调用第一个实现是最好的方法。

1。我实现了异步方法

    public Task<int> CountAsync(Expression<Func<TModel, bool>> predicate)
    {
        // some code;
        // .
        // .
        // .


        // call Entity Framework CountAsync method
        return _dbset.CountAsync(predicate);
    }

然后是第二种方法

    public int Count(Expression<Func<TModel, bool>> predicate)
    {
        // calling the async version and get the result value
        return CountAsync(predicate).Result;
    }

2。我实现了同步方法

    public int Count(Expression<Func<TModel, bool>> predicate)
    {
        // some code;
        // .
        // .
        // .


        // call Entity Framework Count method
        return _dbset.Count(predicate);
    }

然后

    public Task<int> CountAsync(Expression<Func<TModel, bool>> predicate)
    {
        // embed the sync method in a task
        return Task.Run(() => Count(predicate));
    }

0 个答案:

没有答案