我正在使用天蓝色表查询来检索分配给用户的所有错误实体。之后我更改实体的属性以声明实体处于处理模式。处理完实体后,我从表中删除了实体。
当我进行并行测试时,可能会发生在查询期间,一个实体已经被另一个线程处理和删除。因此,当我想替换实体时,我收到错误 404 ResourceNotFound。
有没有办法测试实体是否在线程之外更改或者它是否仍然存在?捕获错误 404 并忽略它会更好,还是我应该再次查询实体(对我来说似乎都不合适)?
TableQuery<ErrorObjectTableEntity> query = new TableQuery<ErrorObjectTableEntity>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, user));
List<ErrorObjectTableEntity> queryResult = table.ExecuteQuery(query).OrderBy(x => x.action).ToList();
foreach (ErrorObjectTableEntity entity in queryResult)
{
entity.inProcess = true;
try
{
TableOperation updateOperation = TableOperation.Replace(entity);
table.Execute(updateOperation);
}
catch
{
//..some logging here
//catch error 404?
}
//do some action
try
{
TableOperation deleteOperation = TableOperation.Delete(entity);
table.Execute(deleteOperation);
}
catch{...}
}