我正在尝试使用异步写入 Azure 表存储,BeginExecute
但结果不一致。当我更改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);
主线程放在末尾时,一切都写完了。有没有办法在主线程结束之前暂停它以确保所有其他线程都已完成,这样它们就不会在完成之前被取消?