Элемент 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();
        }
    }
}

0 ответов