是否可以异步运行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?
答案 0 :(得分:0)
试试Task.Run
。您应该能够异步运行任何非异步代码,然后await
结果。
答案 1 :(得分:0)
您可以使用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>);
}