如何解决IAsyncEnumerator 项变为空
在使用枚举器迭代我的 ReliableDictionary 时,“Current.Value”返回 null,因为“totalLength += val.Length;”行抛出 NullPointerException。 这怎么可能?
public async Task RemoveItemsPeriodically()
{
try
{
var totalLength = 0;
var dict= await this.stateManager.GetorAddAsync<IReliableDictionary<string,Item>>("dict");
using (ITransaction tx = this.stateManager.CreateTransaction())
{
IAsyncEnumerable<keyvaluePair<string,Item>> asyncEnumerable = await dict.CreateEnumerableAsync(tx);
List<string> removeKeys= new List<string>();
using (IAsyncEnumerator<keyvaluePair<string,Item>> asyncEnumerator = asyncEnumerable.GetAsyncEnumerator())
{
while (await asyncEnumerator.MoveNextAsync(CancellationToken.None))
{
if (asyncEnumerator == null || asyncEnumerator.Current.Value == null)
{
Log();
}
else
{
var keyvalue = asyncEnumerator.Current;
var key = keyvalue.Key;
var val= keyvalue.Value;
totalLength += val.Length;
if (this.checkToDelete(item.DeleteValue))
{
removeKeys.Add(key);
}
}
}
foreach (string keyToRemove in removeKeys)
{
dict= await this.stateManager.GetorAddAsync<IReliableDictionary<string,Item>>("dict");
await dict.TryRemoveAsync(tx,keyToRemove);
}
}
await tx.CommitAsync();
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。