是否可以异步运行ExecuteQuery?
考虑以下代码:
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?
发布于 2014-02-01 01:59:26
试试Task.Run。您应该能够异步运行任何非异步代码,然后对结果执行await。
发布于 2014-05-12 19:45:41
你可以用Task.Factory.FromAsync包装旧式的回调函数。例如:
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>);
}https://stackoverflow.com/questions/21486638
复制相似问题