返回bool的异步方法

Alm*_*lma 3 c#

我在C#中有一个Async方法,它调用返回true或false的SQL函数,方法返回true或false的bool变量.

这是我的方法:

    public async Task<bool> Canlog(string userName, string pass
    {
        Context context = new Context();
        bool queryResult = false;

        using (context )
        {
            using (context .Database.Connection)
            {
                context .Database.Connection.Open();

                string sqlStatment = .....

                queryResult = authorizationContext.Database
                        .SqlQuery<bool>(sqlStatment)
                        .Single();
            }
        }

        return await queryResult;
    }
Run Code Online (Sandbox Code Playgroud)

当我尝试这个时,我在这行返回错误await queryResult,无法等待bool.

jhi*_*den 5

Single()回报<T>,而不是Task<T>.你想要的是SingleAsync():

    return await authorizationContext.Database
                                     .SqlQuery<bool>(sqlStatement)
                                     .SingleAsync();
Run Code Online (Sandbox Code Playgroud)

此外,您不能在using语句之外等待,因为在异步操作强制执行之前,您的数据库上下文将被释放.