是否可以取消Azure表查询?
我们有一些情况,我们正在进行长时间运行的查询(可能需要30-60秒),但对象会被处理掉,并且需要在查询完成之前中止查询。
我们正在使用TableServicesContext和ExecuteQuery(同步)。如果解决方案需要,我们也可以考虑异步。
答案 0 :(得分:1)
首先,我怀疑表服务查询的持续时间可能超过30秒。查看this documentation on Query Timeouts and Pagination。
此外,Windows Azure Storage Services SLA保证表服务(用于批处理操作)的最长响应时间为30秒。单个实体的操作应在2秒内完成。
如果还有问题,那么您的解决方案就是使用BeginExecute方法,它会返回IAsyncResult个对象。您可以拥有自己的计时器,并根据您自己的逻辑使用给定的IAsyncResult调用CancelRequest。
到目前为止,如果您关注了我的所有链接,您可能已经注意到BeginExecute和CancelRequest是DataServiceContext calss的方法。这就是为什么TableSeriveContext的文档中没有完整的原因。但是由于TableServiceContext直接继承了DataServiceContext,因此这些方法也可以在TableServiceContext中使用。
您可能还想查看How to: Execute Asynchronous Data Service Queries
希望这有帮助!