C# 卡在IMobileServiceTable.toListSync()中
我已经修改了Xamarin/Azure TODO示例。但是代码被卡住了 IMobileServiceTable.ToListAsync() 这是我的IO类:C# 卡在IMobileServiceTable.toListSync()中,c#,azure,xamarin,C#,Azure,Xamarin,我已经修改了Xamarin/Azure TODO示例。但是代码被卡住了 IMobileServiceTable.ToListAsync() 这是我的IO类: class DataIO { BackgroundWorker DatabaseWorker = new BackgroundWorker(); IMobileServiceTable<UserPosition> PositionTable; MobileServiceClient client;
class DataIO
{
BackgroundWorker DatabaseWorker = new BackgroundWorker();
IMobileServiceTable<UserPosition> PositionTable;
MobileServiceClient client;
public DataIO()
{
Init();
}
public void Init()
{
client = new MobileServiceClient(Constants.ApplicationURL);
PositionTable = client.GetTable<UserPosition>();
}
async void AddEntry(UserPosition entry)
{
await PositionTable.InsertAsync(entry);
}
public async Task<List<UserPosition>> GetEntries()
{
List<UserPosition> Entries = await PositionTable.ToListAsync();
return Entries;
}
public async void DeleteEntry(UserPosition entry)
{
await PositionTable.DeleteAsync(entry);
}
public async void AddToDatabase(UserPosition item)
{
await PositionTable.InsertAsync(item);
}
}
类数据IO
{
BackgroundWorker DatabaseWorker=新的BackgroundWorker();
IMobileServiceTable位置表;
移动服务客户端;
公共数据
{
Init();
}
公共void Init()
{
client=新的MobileServiceClient(Constants.ApplicationURL);
PositionTable=client.GetTable();
}
异步void AddEntry(UserPosition条目)
{
等待位置表。插入同步(输入);
}
公共异步任务GetEntries()
{
列表条目=wait PositionTable.toListSync();
返回条目;
}
公共异步void DeleteEntry(UserPosition条目)
{
等待PositionTable.DeleteAsync(条目);
}
公共异步void AddToDatabase(UserPosition项)
{
等待位置表。插入同步(项目);
}
}
调试器既不会跳过它,也不会抛出错误。
怎么处理
在之前的一次电话中,没有任何问题
编辑:
我已将GetEntries()方法重写为:
public async Task<List<UserPosition>> GetEntries()
{
Task<List<UserPosition>> task = PositionTable.ToListAsync();
List<UserPosition> entries = await task;
return entries;
}
public异步任务GetEntries()
{
Task Task=PositionTable.ToListSync();
列表条目=等待任务;
返回条目;
}
据此,。但调试器只是停留在队列中
Task<List<UserPosition>> task = PositionTable.ToListAsync();
Task Task=PositionTable.toListSync();
AFAIK,IMobileServiceTable.ToListAsync()
将发送如下请求以检索结果:
Get https://<your-app-name>.azurewebsites.net/tables/UserPosition
Gethttps://.azurewebsites.net/tables/UserPosition
我建议您在调用
IMobileServiceTable.ToListAsync()
时使用来收集网络跟踪。此外,您还可以通过浏览器从移动应用程序访问表端点,以确保移动应用程序能够按预期工作。此外,这里有一个关于的很棒的教程,您可以参考。您是如何修改TODO示例的?如果它被卡住了,听起来很像死锁场景。您可以尝试将ConfigureAwait(false)
添加到异步调用中吗?另外,请添加更多关于您正在做什么以及如何调用此方法的详细信息。我添加了我创建的类。联机表有条目(我以前添加过)。但是现在我不再从azure获取数据了。列表条目=wait PositionTable.ToListAsync().configurewait(false);不会改变任何事情…是的,你做错了。阅读如何使用async
和wait
关键字。@Christoph,除了该类中的其他错误外,如何调用GetEntries()
?很可能您混合了阻塞和异步code@Christoph如果它保持在这条线上,那似乎是一个僵局。调用堆栈中较高的部分会导致该行阻塞。