我知道我们可以获得待处理项目的数量
PendingChanges = manager.MobileServiceClient.SyncContext.PendingOperations;
但这只能得到待处理项目的总数。如果我需要显示尚未同步某个类型的所有待处理项目的列表,我该怎么办?有没有办法可以做到这一点?
谢谢
您可以订阅一个活动来获取每个活动。初始化同步上下文时,请使用:
await client.SyncContext.InitializeAsync(store, StoreTrackingOptions.NotifyLocalAndServerOperations);
您可以订阅商店操作事件,如下所示:
subscription = client.EventManager.Subscribe<StoreOperationCOmpletedEvent>(StoreOperationEventHandler);
你可以在这里获得这个笔记的维基版:https://github.com/Azure/azure-mobile-apps-net-client/wiki/How-to-get-notifications-of-new-records-added-during-Pull-operation
我用这样的方法取得了成功:
public async Task<string> GetPendingOperationsAsync()
{
var query = MobileServiceTableQueryDescription.Parse("__operations", null);
var jsonResult = await myClient.SyncContext.Store.ReadAsync(query);
return jsonResult.ToString();
}
我所关心的只是得到一个我可以传递给错误报告的字符串,但如果你想以编程方式检查数据作为JToken树,你可以删除ToString()
部分。此外,我相信你可以将查询传递给null
调用来过滤你的结果,例如按类型,而不是Parse()
。
显然,这依赖于Azure移动服务的内部实现,因此使用风险由您自己承担。