- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试将 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/
我的 RestSharp 实现存在以下问题。如何让我的应用程序在继续之前等待 ExecuteAsync() 的响应? 我尝试了不同的解决方案: 首先(该方法不等待 ExecuteAsync 响应):
我熟悉如何在我的 Google Drive 中创建文件夹,但我正在考虑使用异步方法来执行此操作。但是,在这样做时,我不确定如何获取我明确添加到我希望返回的字段中的字段。 我的代码如下: private
我在 Asp.Net Core Web API 中实现了一个 Microsoft.Extensions.Hosting.BackgroundService,它在 ExecuteAsync 内部有一个阻
对于使用 MSAL.NET v4 (nuget Microsoft.Identity.Client v4.3.0) 中的应用程序(客户端 ID 和 secret 无用户上下文)使用承载 token 进
所以,这一直有效(并且在模拟器中继续正常工作)。 当我在 Azure 中启动经典云服务时,出现以下错误。 ExecuteAsync() 位于 Web 角色中,位于 Results/ChallengeR
我对 AcquireTokenWithDeviceCode 的调用以及对返回对象使用 ExecuteAsync() 的调用永远不会返回。 deviceCodeResultCallback 中的断点按预
这是我的原始方法示例 public void insertIntoDb(SampleObject sample){ ------------------------------------
我正在尝试使用 ExecuteAsync 发出异步获取请求,但它从不回应。令我困惑的是 ExecuteAsync有效,两种同步方法也是如此 Execute和 Execute . 这是我的代码: var
我正在调用 request.executeAnsyc 以用信息填充我的数组并显示在 ListView 上。遗憾的是,在 request.executeAnsyc 完成之前调用了数组。所以我的 Frag
我正在尝试将 10000 条记录插入 Azure 表存储中。我正在使用 ExecuteAsync() 来实现它,但不知何故插入了大约 7500 条记录,其余记录丢失了。我故意不使用 await 关键字
所以我有一个 dotnet 核心工作进程,我想在某些情况下关闭工作进程。 protected override async Task ExecuteAsync(CancellationToken st
我有一个名为 Worker 的 BackgroundService,我重写了 ExecuteAsync 方法以每 10 秒运行一次。有时,我跑的东西会持续很长时间。在这种情况下,我想终止正在运行的程序
我在执行包装策略时遇到上述异常,包括:重试、断路器和隔板。 我有以下政策: var sharedBulkhead = Policy.BulkheadAsync( maxPara
如果根据 Protractor 规范,我在 browser.executeAsyncScript 中执行脚本,我应该如何告知脚本确实失败了?考虑以下对 browser.executeAsyncScri
尝试使用 Nsubstitute 为 RestClient(来自 RestSharp)模拟 ExecuteAsync 方法时遇到了困难。我看过一个使用 Moq 的示例(此处:Mocking Rests
我在异步方法中返回变量时遇到问题。我能够获取要执行的代码,但无法获取返回电子邮件地址的代码。 public async Task GetSignInName (string id) {
我正在尝试通过调用 session.executeAsync() 而不是 session.execute() 来加速我们的代码写入数据库。 我们有数据库连接可能断开的用例,目前之前的 execute(
我是 Javascript 的新手,正在尝试编写一个 firefox 附加组件。 我正在尝试将从 SQL 查询返回的数据传递/提取到调用函数。好像不行。 我搜索了有关变量范围的信息,查看了我可以在该站
我正在使用 datastax java 驱动程序 3.1.0 连接到 cassandra 集群,我的 cassandra 集群版本是 2.0.10。我正在以 QUORUM 一致性异步编写。 pri
在我的 api Controller 操作方法中。我正在为获取请求使用内容协商。代码是: IContentNegotiator negotiator = this.Configuration.Serv
我是一名优秀的程序员,十分优秀!