Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.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# 卡在IMobileServiceTable.toListSync()中_C#_Azure_Xamarin - Fatal编程技术网

C# 卡在IMobileServiceTable.toListSync()中

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;

我已经修改了Xamarin/Azure TODO示例。但是代码被卡住了

IMobileServiceTable.ToListAsync()

这是我的IO类:

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如果它保持在这条线上,那似乎是一个僵局。调用堆栈中较高的部分会导致该行阻塞。