RemoveAllListenerByOwner 倒序移除

This commit is contained in:
ALEXTANGXIAO
2024-10-11 21:47:21 +08:00
parent 990222c7c6
commit 058ac2c9a5

View File

@@ -96,15 +96,13 @@ namespace TEngine
{ {
if (_allEventListenerMap.TryGetValue(eventId, out var listListener)) if (_allEventListenerMap.TryGetValue(eventId, out var listListener))
{ {
for (int i = 0; i < listListener.Count; i++) for (int i = listListener.Count - 1; i >= 0 ; i--)
{ {
if (listListener[i].IsDeleted) if (listListener[i].IsDeleted)
{ {
Log.Info("remove delay delete eventId[{0}]", eventId); Log.Info("remove delay delete eventId[{0}]", eventId);
listListener[i] = listListener[^1]; EventRegInfo.Release(listListener[i]);
EventRegInfo.Release(listListener[^1]); listListener.RemoveAt(i);
listListener.RemoveAt(listListener.Count - 1);
i--;
} }
} }
} }
@@ -462,7 +460,7 @@ namespace TEngine
bool isProcessing = _processEventList.Contains(eventId); bool isProcessing = _processEventList.Contains(eventId);
bool delayDeleted = false; bool delayDeleted = false;
for (int i = 0; i < list.Count; i++) for (int i = list.Count - 1; i >= 0 ; i--)
{ {
var regInfo = list[i]; var regInfo = list[i];
if (regInfo.Owner == owner) if (regInfo.Owner == owner)
@@ -474,10 +472,8 @@ namespace TEngine
} }
else else
{ {
list[i] = list[^1]; EventRegInfo.Release(list[i]);
EventRegInfo.Release(list[^1]); list.RemoveAt(i);
list.RemoveAt(list.Count - 1);
i--;
} }
} }
} }