@@ -45,31 +45,36 @@ public override void Action(IEvent ev, IProcessContext context)
4545
4646 object syncObject = null ;
4747
48- lock ( _locksAccess )
48+ try
4949 {
50- if ( ! Locks . ContainsKey ( lockValue ) )
50+ lock ( _locksAccess )
5151 {
52- Locks . Add ( lockValue , new object ( ) ) ;
53- }
52+ if ( ! Locks . ContainsKey ( lockValue ) )
53+ {
54+ Locks . Add ( lockValue , new object ( ) ) ;
55+ }
5456
55- syncObject = Locks [ lockValue ] ;
56- }
57+ syncObject = Locks [ lockValue ] ;
58+ }
5759
58- lock ( syncObject )
59- {
60- foreach ( IProcessBehaviour behaviour in _block . Where ( behaviour => behaviour . Condition ( ev , context ) ) )
60+ lock ( syncObject )
6161 {
62- ProcessContext . PreAction ? . Invoke ( behaviour , new ActionEventArgs ( context : context , ev : ev ) ) ;
63- behaviour . Action ( ev , context ) ;
64- ProcessContext . PostAction ? . Invoke ( behaviour , new ActionEventArgs ( context : context , ev : ev ) ) ;
62+ foreach ( IProcessBehaviour behaviour in _block . Where ( behaviour => behaviour . Condition ( ev , context ) ) )
63+ {
64+ ProcessContext . PreAction ? . Invoke ( behaviour , new ActionEventArgs ( context : context , ev : ev ) ) ;
65+ behaviour . Action ( ev , context ) ;
66+ ProcessContext . PostAction ? . Invoke ( behaviour , new ActionEventArgs ( context : context , ev : ev ) ) ;
67+ }
6568 }
6669 }
67-
68- lock ( _locksAccess )
70+ finally
6971 {
70- if ( Locks . ContainsKey ( lockValue ) )
72+ lock ( _locksAccess )
7173 {
72- Locks . Remove ( lockValue ) ;
74+ if ( Locks . ContainsKey ( lockValue ) )
75+ {
76+ Locks . Remove ( lockValue ) ;
77+ }
7378 }
7479 }
7580 }
0 commit comments