首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CloudTable ExecuteQuery异步

CloudTable ExecuteQuery异步
EN

Stack Overflow用户
提问于 2014-02-01 01:44:46
回答 2查看 2.9K关注 0票数 2

是否可以异步运行ExecuteQuery?

考虑以下代码:

代码语言:javascript
复制
public virtual MyEntity MyMethod(string parm1, string parm2)
{
     string queryString = TableQuery.CombineFilters(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, parm1),
                                                    TableOperators.And,
                                                    TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.Equal, parm2));
     TableQuery<MyEntity> query = new TableQuery<MyEntity>().Where(queryString);

     return TenantTnsTable.ExecuteQuery(query).ToList().FirstOrDefault();
}

有没有可能使这成为异步方法,并在ExecuteQuery调用中使用await?

EN

回答 2

Stack Overflow用户

发布于 2014-02-01 01:59:26

试试Task.Run。您应该能够异步运行任何非异步代码,然后对结果执行await

票数 0
EN

Stack Overflow用户

发布于 2014-05-12 19:45:41

你可以用Task.Factory.FromAsync包装旧式的回调函数。例如:

代码语言:javascript
复制
public static Task<TableQuerySegment<T>> ExecuteQueryAsync<T>(
        this CloudTable table,
        TableQuery<T> query,
        TableContinuationToken token,
        CancellationToken ct = default(CancellationToken))
        where T : ITableEntity, new()
    {
        ICancellableAsyncResult ar = table.BeginExecuteQuerySegmented(query, token, null, null);
        ct.Register(ar.Cancel);

        return Task.Factory.FromAsync<TableQuerySegment<T>>(ar, table.EndExecuteQuerySegmented<T>);
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21486638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档