我有一个移动服务同步表,它给了我绝对非常可怕的性能。 该表声明为:
IMobileServiceSyncTable<Myclass> myclassTable;
this.client = new MobileServiceClient("my url here");
var store = new MobileServiceSQLiteStore(“localdb.db”);
store.DefineTable<Myclass>();
this.client.SyncContext.InitializeAsync(store);
this.myclassTable = client.GetSyncTable<Myclass>();
稍后在我正在调用的按钮处理程序中:
this.myclassTable.ToCollectionAsync();
问题是,表现可怕。这需要最好的时间,大部分时间都会无限期地坐在那里。
上面有什么我做过的,可以解释为什么表现如此绝对可怕?
答案 0 :(得分:1)
this.myclassTable.ToCollectionAsync();
对于IMobileServiceSyncTable
表,上面的方法将针对本地sqlite db执行SELECT * FROM [Myclass]
sql语句。
问题是,表现可怕。这需要最好的时间,大部分时间都会无限期地坐在那里。
AFAIK,在使用脱机同步时,我们可以调用pull operation来检索服务器数据的子集,然后将检索到的数据插入到本地存储表中。对于await this.myclassTable.PullAsync()
,它将发送请求并使用50中的MaxPageSize检索服务器数据,客户端SDK将发送另一个请求以确认是否有更多数据并自动提取它们。
总之,我建议您检查一下代码,找到导致性能不佳的特定代码。此外,您可以利用添加诊断日志记录,通过Fiddler捕获网络跟踪来解决此问题。