【发布时间】:2013-04-06 01:44:14
【问题描述】:
我正在尝试使用 BeginExecute 异步写入 Azure 表存储,但得到的结果不一致。当我将BeginExecute 更改为Execute 时,一切都会正确写入,但我猜我的线程有问题,它们要么相互取消,要么取决于主线程发送消息的速度。这是我现在正在做的事情:
TableOperation op = TableOperation.Insert(entity);
_table.BeginExecute(op, new AsyncCallback(onTableExecuteComplete), entity);
private void onTableExecuteComplete(IAsyncResult result)
{
TableResult tr = _table.EndExecute(result);
if ((tr.HttpStatusCode < 200) || (tr.HttpStatusCode > 202))
{
Console.WriteLine("Error writing to table.");
}
}
我正在用几个条目对其进行测试,我会在表格中得到一两个条目,但不是全部。关于如何捕获错误并确保所有条目都正确编写的任何想法?
更新:我发现当我把Thread.Sleep(5000); 放在我的主线程末尾时,一切都写完了。有没有办法在主线程结束之前暂停它,以确保所有其他线程都已完成,这样它们就不会在完成之前被取消?
【问题讨论】:
标签: c# azure asynchronous azure-storage