Multithreading 异步方法返回System.Threading.Tasks.Task

Multithreading 异步方法返回System.Threading.Tasks.Task,multithreading,sqlite,asynchronous,Multithreading,Sqlite,Asynchronous,我正在学习异步方法,但我不明白为什么asyn任务方法会返回 System.Threading.Tasks.Task'1[系统 代码如下: public async Task<List<T>> GetAll(){ try{ var conn = new SQLiteAsyncConnection(System.IO.Path.Combine(path,"database.db")); var value = await con

我正在学习异步方法,但我不明白为什么asyn任务方法会返回

System.Threading.Tasks.Task'1[系统

代码如下:

public async Task<List<T>> GetAll(){
    try{
        var conn = new SQLiteAsyncConnection(System.IO.Path.Combine(path,"database.db"));
            var value = await conn.Table<T>().ToListAsync();
            return value;
        }
        catch (Exception e)
        {
            Log.Info(TAG, "Error when selecting the registry. " + e.Message);
        }

        return null;
}

在本例中,返回的值为System.Threading.Tasks.Task'1[系统…而不是作为查询返回。

任何异步任务都会返回一个任务对象,该对象允许查询异步请求的状态。如果要访问查询结果,必须查询属性task.result,该属性包含异步方法的实际输出。

不太清楚您的意思-y是的,它返回一个任务…异步方法就是这样工作的。它们返回的内容是,我已经为您开始了工作-任务完成后,结果将出现在这个任务中。对不起,让我更清楚一点。我相信当我运行conn.Table时。ToListSync返回必须类似于从datatable中选择*,例如,2,但它返回的是System。Threading.Tasks.Task'1..对于调用'GetAll'方法的人来说。不,我恐怕这一点都不清楚了…听起来你还是应该回顾一下调用异步API的含义。如果方法阻塞,直到它可以直接返回结果为止,根据定义,它不能是异步的…@EricSaboia你的代码已经使用了ToListSync,它返回一个任务。它已经使用await来获得其结果。您的方法与ToListSync没有什么不同。这两个方法都是异步方法,都承诺在ToListSync中某个异步方法完成时返回值。我相信,要解决此问题,之所以会出现此问题,是因为调用GetAll的方法没有在GetAll方法和不是异步方法。在这种情况下,我需要回答这个问题?谢谢!这是一个非常糟糕的主意,因为它将阻塞,直到异步操作完成。OP已经在以正确的方式等待结果-使用wait