Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Azure:同步获取SQL数据_C#_Azure Sql Database - Fatal编程技术网

C# Azure:同步获取SQL数据

C# Azure:同步获取SQL数据,c#,azure-sql-database,C#,Azure Sql Database,我是Azure/SQL主题的初学者。我正在尝试从属于我的类对象的SQLAzure数据库中获取对象。假设SQL Server数据库中存在与my typeUserPosition相对应的对象 如何以简单、同步的方式获取它们?目前,性能并不重要。我只是想获取数据,以供学习之用 这是我的代码: IMobileServiceTable<UserPosition> PositionTable; MobileServiceClient client; client = ne

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

如何以简单、同步的方式获取它们?目前,性能并不重要。我只是想获取数据,以供学习之用

这是我的代码:

    IMobileServiceTable<UserPosition> PositionTable;
    MobileServiceClient client;
    client = new MobileServiceClient(Constants.ApplicationURL);
    PositionTable = client.GetTable<UserPosition>();
    Task<List<UserPosition>> items;
    items = PositionTable.ToListAsync();
    items.Start();
IMobileServiceTable位置表;
移动服务客户端;
client=新的MobileServiceClient(Constants.ApplicationURL);
PositionTable=client.GetTable();
任务项目;
items=PositionTable.toListSync();
items.Start();
我现在得到一个例外:

不能为承诺式任务调用Start

(我把它从德语翻译过来)


如何正确执行此操作?

由于
异步方法
始终返回正在运行的
任务,因此
任务项
已在运行。删除
项。开始()和您的代码将工作。

任务项
已在运行,因为
异步方法
始终返回一个正在运行的
任务
。删除
项。开始()和您的代码将正常工作。

关键字
async
非常适合将复杂的线程执行代码转换为看起来像同步的代码和程序。您可以通过使用wait关键字来实现这一点,就您的方法而言,它将像同步一样执行,但其好处是执行线程将返回到池中,并在等待依赖项执行时被主机进程重用。如果您对控制/监视任务本身的细节不感兴趣(我认为在本例中您不感兴趣),那么替换

Task<List<UserPosition>> items;
items = PositionTable.ToListAsync();
items.Start();
任务项;
items=PositionTable.toListSync();
items.Start();

List data=wait PositionTable.toListSync();

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

关键字
async
非常适合将复杂的线程执行代码转换为看起来像同步的代码和程序。您可以通过使用wait关键字来实现这一点,就您的方法而言,它将像同步一样执行,但其好处是执行线程将返回到池中,并在等待依赖项执行时被主机进程重用。如果您对控制/监视任务本身的细节不感兴趣(我认为在本例中您不感兴趣),那么替换

Task<List<UserPosition>> items;
items = PositionTable.ToListAsync();
items.Start();
任务项;
items=PositionTable.toListSync();
items.Start();

List data=wait PositionTable.toListSync();

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

嗯。现在我没有任何例外。但我也没有得到任何数据。任务现在告诉我“等待激活”。当我在最后执行“List allItems=items.Result”时,应用程序挂起在那里。调用Wait或检查任务的Result属性可能(并且将)导致死锁。谢谢。那么,我如何从中获取数据,或者甚至查看我的项目任务中是否有dat?请在
之后打印结果。结果
确定。现在我没有任何例外。但我也没有得到任何数据。任务现在告诉我“等待激活”。当我在最后执行“List allItems=items.Result”时,应用程序挂起在那里。调用Wait或检查任务的Result属性可能(并且将)导致死锁。谢谢。那么,我如何从中获取数据,或者甚至查看我的项目任务中是否有dat?在
之后打印结果。结果