小编Joh*_*ach的帖子

使用PhysicalAddress作为键时,在Dictionary中重复键

所以我遇到了一个有趣的问题,当我使用PhysicalAddress类型的密钥时,我在C#Dictionary中获得了重复的密钥.这很有趣,因为它只发生在很长一段时间后,我无法在完全不同的机器上使用相同的代码在单元测试中重现它.我可以在Windows XP SP3机器上可靠地重现它,但只能让它一次运行几天,即使这样,它也只会发生一次.

下面是我正在使用的代码,下面是该部分代码的日志输出.

码:

private void ProcessMessages()
{
    IDictionary<PhysicalAddress, TagData> displayableTags = new Dictionary<PhysicalAddress, TagData>();

    while (true)
    {
        try
        {
            var message = incomingMessages.Take(cancellationToken.Token);

            VipTagsDisappeared tagsDisappeared = message as VipTagsDisappeared;

            if (message is VipTagsDisappeared)
            {
                foreach (var tag in tagDataRepository.GetFromTagReports(tagsDisappeared.Tags))
                {
                    log.DebugFormat(CultureInfo.InvariantCulture, "Lost tag {0}", tag);

                    RemoveTag(tag, displayableTags);
                }

                LogKeysAndValues(displayableTags);

                PublishCurrentDisplayableTags(displayableTags);
            }
            else if (message is ClearAllTags)
            {
                displayableTags.Clear();
                eventAggregator.Publish(new TagReaderError());
            }
            else if (message is VipTagsAppeared)
            {
                foreach (TagData tag in tagDataRepository.GetFromTagReports(message.Tags))
                {
                    log.DebugFormat(CultureInfo.InvariantCulture, "Detected tag ({0}) with …
Run Code Online (Sandbox Code Playgroud)

.net c# dictionary duplicates

7
推荐指数
1
解决办法
556
查看次数

标签 统计

.net ×1

c# ×1

dictionary ×1

duplicates ×1