を使用して Azure Table Storage に非同期で書き込もうとして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.");
}
}
いくつかのエントリでテストしていますが、テーブルに 1 つまたは 2 つのエントリが表示されますが、すべてではありません。エラーをキャッチし、すべてのエントリが適切に記述されていることを確認する方法についてのアイデアはありますか?
更新:Thread.Sleep(5000);
メイン スレッドの最後に配置すると、すべての書き込みが終了することがわかりました。メインスレッドが終了する前に一時停止して、他のすべてのスレッドが終了していることを確認して、終了する前にキャンセルされないようにする方法はありますか?