Latest versions of the SDk now support async (nuget).
You can execute your query using the ExecuteSegmentedAsync Method :
var query = (from s in table.CreateQuery<SampleEntity>()
where s.PartitionKey == sampleUID.ToString() select s)
.AsTableQuery<SampleEntity>();
TableContinuationToken continuationToken = null;
do
{
// Execute the query async until there is no more result
var queryResult = await query.ExecuteSegmentedAsync(continuationToken);
foreach (var entity in queryResult)
{
}
continuationToken = queryResult.ContinuationToken;
} while (continuationToken != null);
I've converted some sample of this tutorial (How to use Table storage from .NET):
Create a table
async Task CreateATable() { // Retrieve the storage account from the connection string. CloudStorageAccount storageAccount = CloudStorageAccount.Parse( CloudConfigurationManager.GetSetting("StorageConnectionString")); // Create the table client. CloudTableClient tableClient = storageAccount.CreateCloudTableClient(); // Create the table if it doesn't exist. CloudTable table = tableClient.GetTableReference("people"); await table.CreateIfNotExistsAsync(); }
Add an entity to a table
public class CustomerEntity : TableEntity { public CustomerEntity(string lastName, string firstName) { this.PartitionKey = lastName; this.RowKey = firstName; } public CustomerEntity() { } public string Email { get; set; } public string PhoneNumber { get; set; } } ... //The script: // Retrieve the storage account from the connection string. CloudStorageAccount storageAccount = CloudStorageAccount.Parse( CloudConfigurationManager.GetSetting("StorageConnectionString")); // Create the table client. CloudTableClient tableClient = storageAccount.CreateCloudTableClient(); // Create the CloudTable object that represents the "people" table. CloudTable table = tableClient.GetTableReference("people"); // Create a new customer entity. CustomerEntity customer1 = new CustomerEntity("Harp", "Walter"); customer1.Email = "Walter@contoso.com"; customer1.PhoneNumber = "425-555-0101"; // Create the TableOperation object that inserts the customer entity. TableOperation insertOperation = TableOperation.Insert(customer1); // Execute the insert operation. await table.ExecuteAsync(insertOperation);
Insert a batch of entities
// Retrieve the storage account from the connection string. CloudStorageAccount storageAccount = CloudStorageAccount.Parse( CloudConfigurationManager.GetSetting("StorageConnectionString")); // Create the table client. CloudTableClient tableClient = storageAccount.CreateCloudTableClient(); // Create the CloudTable object that represents the "people" table. CloudTable table = tableClient.GetTableReference("people"); // Create the batch operation. TableBatchOperation batchOperation = new TableBatchOperation(); // Create a customer entity and add it to the table. CustomerEntity customer1 = new CustomerEntity("Smith", "Jeff"); customer1.Email = "Jeff@contoso.com"; customer1.PhoneNumber = "425-555-0104"; // Create another customer entity and add it to the table. CustomerEntity customer2 = new CustomerEntity("Smith", "Ben"); customer2.Email = "Ben@contoso.com"; customer2.PhoneNumber = "425-555-0102"; // Add both customer entities to the batch insert operation. batchOperation.Insert(customer1); batchOperation.Insert(customer2); // Execute the batch operation. await table.ExecuteBatchAsync(batchOperation);
And so on...