diff --git a/BetterSecondbot/Tracking/BetterTracking.cs b/BetterSecondbot/Tracking/BetterTracking.cs index cb3a912..da40aca 100644 --- a/BetterSecondbot/Tracking/BetterTracking.cs +++ b/BetterSecondbot/Tracking/BetterTracking.cs @@ -160,23 +160,48 @@ namespace BetterSecondbot.Tracking } } - protected void TrackerEventAdd(UUID av) + protected void TrackerEventAdd(object av) { - if(AvatarSeen.ContainsKey(av) == false) + if (UUID.TryParse(av.ToString(), out UUID avuuid) == true) { - output(av, "entry|" + controler.Bot.FindAvatarKey2Name(av)); - AvatarSeen.Add(av, 0); + lock (AvatarSeen) + { + if (AvatarSeen.ContainsKey(avuuid) == false) + { + string name = controler.Bot.FindAvatarKey2Name(avuuid); + if (name == "lookup") + { + Thread.Sleep(2000); + } + name = controler.Bot.FindAvatarKey2Name(avuuid); + output(avuuid, "entry###" + name); + AvatarSeen.Add(avuuid, 0); + } + AvatarSeen[avuuid] = helpers.UnixTimeNow(); + } } - AvatarSeen[av] = helpers.UnixTimeNow(); } - protected void TrackerEventRemove(UUID av) + protected void TrackerEventRemove(object av) { - if (AvatarSeen.ContainsKey(av) == true) + if (UUID.TryParse(av.ToString(), out UUID avuuid) == true) { - output(av, "exit|" + controler.Bot.FindAvatarKey2Name(av)+"|"+ AvatarSeen[av].ToString()); - AvatarSeen.Remove(av); + if (AvatarSeen.ContainsKey(avuuid) == true) + { + lock (AvatarSeen) + { + string name = controler.Bot.FindAvatarKey2Name(avuuid); + if (name == "lookup") + { + Thread.Sleep(2000); + } + name = controler.Bot.FindAvatarKey2Name(avuuid); + output(avuuid, "exit###" + name + "|" + AvatarSeen[avuuid].ToString()); + AvatarSeen.Remove(avuuid); + } + } } + } @@ -187,7 +212,8 @@ namespace BetterSecondbot.Tracking { foreach (UUID av in e.NewEntries) { - TrackerEventAdd(av); + Thread newThread = new Thread(this.TrackerEventAdd); + newThread.Start(av); } } if (e.RemovedEntries.Count() > 0) diff --git a/Core/bottypes/AVstorageBot.cs b/Core/bottypes/AVstorageBot.cs index 40dedb0..0a92a92 100644 --- a/Core/bottypes/AVstorageBot.cs +++ b/Core/bottypes/AVstorageBot.cs @@ -356,8 +356,11 @@ namespace BetterSecondBot.bottypes } if (PendingAvatarFinds_viauuid.ContainsKey(avatar_uuid) == false) { - PendingAvatarFinds_viauuid.Add(avatar_uuid, new KeyValuePair(helpers.UnixTimeNow(), 0)); - Client.Avatars.RequestAvatarName(avatar_uuid); + lock (PendingAvatarFinds_viauuid) + { + PendingAvatarFinds_viauuid.Add(avatar_uuid, new KeyValuePair(helpers.UnixTimeNow(), 0)); + Client.Avatars.RequestAvatarName(avatar_uuid); + } } return "lookup"; }