Azure:同步获取SQL数据

时间:2016-10-30 10:04:27

标签: c# azure-sql-database

我是Azure / SQL主题的初学者。我正在尝试从属于我的类对象的SQL Azure数据库中获取对象。假设有些对象与SQL Server数据库中的类型UserPosition相对应。

如何以简单,同步的方式获取它们?目前,表现并不重要。我只想获取用于学习目的的数据。

这是我的代码:

    IMobileServiceTable<UserPosition> PositionTable;
    MobileServiceClient client;
    client = new MobileServiceClient(Constants.ApplicationURL);
    PositionTable = client.GetTable<UserPosition>();
    Task<List<UserPosition>> items;
    items = PositionTable.ToListAsync();
    items.Start();

我现在得到一个例外:

  

可能不会为promise-style-task调用Start。

(我用德语翻译)

如何正确地做到这一点?

2 个答案:

答案 0 :(得分:0)

Task<List<UserPosition>> items已在运行,因为async methods始终返回正在运行的Task<T>。删除items.Start();,您的代码就可以使用。

答案 1 :(得分:0)

async关键字非常适合将复杂的线程执行代码转换为看起来像的代码和类似于同步的程序。您可以使用await关键字来执行此操作,该关键字就您的方法而言将执行,就像它是同步的一样,但有一个好处,即执行线程将返回到池并由主机进程在等待时重用依赖执行。如果你对控制/监控任务本身的细节不感兴趣(我不认为你在这个例子中),那么替换

Task<List<UserPosition>> items;
items = PositionTable.ToListAsync();
items.Start();

List<UserPosition> data = await PositionTable.ToListAsync();

并确保将您的方法标记为异步。这将为您提供异步执行的好处,而无需异步编程的麻烦!