【发布时间】:2015-01-28 10:20:24
【问题描述】:
好吧,我的问题是在 Azure 存储表上调用 await table.ExecuteAsync(...) 确实会插入请求的数据,但永远不会完成(不返回 TableResult)。与 InsertOrUpdate 和 Update 操作相同。我还尝试了具有不同属性数量的不同表 - 同样的问题。
当我调用 table.Execute(...) - 每种操作都可以正常工作。
这是我的代码 - 就这么简单:
外部调用(它在异步操作中放置在 MVC 控制器中):
List<Task<ServiceResult<Boolean?>>> addPostTasks = new List<Task<Common.ServiceResult<bool?>>>();
foreach (var userStream in userStreams)
{
Task<ServiceResult<Boolean?>> addPostTask = postsStorageSvc.AddImagePost(...);
postsAddImagePostTasks.Add(addPostTask);
}
Task.WaitAll(addPostTasks.ToArray());
方法调用:
public async Task<ServiceResult<Boolean?>> AddImagePost(...)
{
ServiceResult<Boolean?> result = new ServiceResult<bool?>(null);
try
{
PostTableEntity newPost = new PostTableEntity(streamId.ToString(), Guid.NewGuid().ToString(), creatorId, date, htmlText);
TableOperation insertOperation = TableOperation.Insert(newPost);
//Following line never ends!
TableResult tableResult = await this._storageTableBootstrapper.Table.ExecuteAsync(insertOperation);
//Following line works perfect - but is not ASYNC
TableResult tableResult = this._storageTableBootstrapper.Table.Execute(insertOperation);
}
catch (Exception ex)
{
result.Result = false;
result.Errors.Add("AzurePostsStorageService Unexpected error: " + ex.Message);
}
return result;
}
【问题讨论】:
-
你是怎么调用这个方法的?
-
什么意思?此代码块采用异步方法,我正在更新我的问题以显示周围的行。
-
显示方法签名以及如何调用它。您是否使用
Task.Result或Task.Wait阻止它? -
我希望现在更清楚我如何称呼它。
标签: c# .net azure async-await azure-table-storage