diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/event/EventManager.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/event/EventManager.java index ae0c82b31..f3963323c 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/event/EventManager.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/event/EventManager.java @@ -72,6 +72,10 @@ public final class EventManager { return Event.Result.DEFAULT; } + private synchronized void removeConsumer(Consumer consumer) { + handlers.removeValue(consumer); + } + private class WeakListener implements Consumer { private final WeakReference> ref; @@ -83,7 +87,7 @@ public final class EventManager { public void accept(T t) { Consumer listener = ref.get(); if (listener == null) { - handlers.removeValue(this); + removeConsumer(this); } else { listener.accept(t); }