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