@@ -72,11 +72,15 @@ public void AddHandler(
7272 if ( ! _registeredHandlers . TryGetValue ( eventSource , out var handlers ) )
7373 {
7474 handlers = new Dictionary < string , HandlersList > ( ) ;
75- handlers [ eventName ] = new HandlersList ( ) ;
7675 _registeredHandlers [ eventSource ] = handlers ;
7776 }
7877
79- handlers [ eventName ] . Add ( handlerScript , handlerMethod ) ;
78+ if ( ! handlers . TryGetValue ( eventName , out var handlersList ) ) {
79+ handlersList = new HandlersList ( ) ;
80+ handlers [ eventName ] = handlersList ;
81+ }
82+
83+ handlersList . Add ( handlerScript , handlerMethod ) ;
8084 }
8185
8286 public void RemoveHandler (
@@ -88,9 +92,13 @@ public void RemoveHandler(
8892 if ( ! ( handlerTarget is ScriptDrivenObject handlerScript ) )
8993 throw RuntimeException . InvalidArgumentType ( "handlerTarget" ) ;
9094
91- if ( _registeredHandlers . TryGetValue ( eventSource , out var handlers ) )
95+ if ( ! _registeredHandlers . TryGetValue ( eventSource , out var handlers ) )
9296 {
93- handlers [ eventName ] . Remove ( handlerScript , handlerMethod ) ;
97+ return ;
98+ }
99+
100+ if ( handlers . TryGetValue ( eventName , out var handlersList ) ) {
101+ handlersList . Remove ( handlerScript , handlerMethod ) ;
94102 }
95103 }
96104
@@ -99,7 +107,11 @@ public void HandleEvent(IRuntimeContextInstance eventSource, string eventName, I
99107 if ( ! _registeredHandlers . TryGetValue ( eventSource , out var handlers ) )
100108 return ;
101109
102- foreach ( var handler in handlers [ eventName ] )
110+ if ( ! handlers . TryGetValue ( eventName , out var handlersList ) ) {
111+ return ;
112+ }
113+
114+ foreach ( var handler in handlersList )
103115 {
104116 handler . Method ( eventArgs ) ;
105117 }
0 commit comments