gpt4 book ai didi

c# - Azure 表存储的 ExecuteAsync() 无法插入所有记录

转载 作者:太空宇宙 更新时间:2023-11-03 18:03:42 25 4
gpt4 key购买 nike

我正在尝试将 10000 条记录插入 Azure 表存储中。我正在使用 ExecuteAsync() 来实现它,但不知何故插入了大约 7500 条记录,其余记录丢失了。我故意不使用 await 关键字,因为我不想等待结果,只想将它们存储在表中。下面是我的代码片段。

private static async void ConfigureAzureStorageTable()
{
CloudStorageAccount storageAccount =
CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
TableResult result = new TableResult();
CloudTable table = tableClient.GetTableReference("test");
table.CreateIfNotExists();

for (int i = 0; i < 10000; i++)
{
var verifyVariableEntityObject = new VerifyVariableEntity()
{
ConsumerId = String.Format("{0}", i),
Score = String.Format("{0}", i * 2 + 2),
PartitionKey = String.Format("{0}", i),
RowKey = String.Format("{0}", i * 2 + 2)
};
TableOperation insertOperation = TableOperation.Insert(verifyVariableEntityObject);
try
{
table.ExecuteAsync(insertOperation);
}
catch (Exception e)
{

Console.WriteLine(e.Message);
}
}
}

该方法的使用有什么不正确的地方吗?

最佳答案

仍然想要等待table.ExecuteAsync()。这意味着 ConfigureAzureStorageTable() 将控制权返回给调用者,该调用者可以继续执行。

按照您在问题中的方式,ConfigureAzureStorageTable() 将继续调用 table.ExecuteAsync() 并退出,以及诸如 >table 将超出范围,而 table.ExecuteAsync() 任务仍未完成。

在 SO 和其他地方使用 async void 有很多注意事项,您还需要考虑。您可以轻松地将您的方法作为async Task,但不在调用者中等待它,而是保留返回的Task以便干净终止等

编辑:一个补充 - 您几乎肯定想在您的 await 上使用 ConfigureAwait(false) ,因为您没有出现需要保留任何上下文。这个blog post有一些关于这一点和一般异步的指导原则。

关于c# - Azure 表存储的 ExecuteAsync() 无法插入所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40980022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com