@@ -50,7 +50,7 @@ public sealed class ChakraCoreJsEngine : JsEngineBase
5050 /// <summary>
5151 /// List of external objects
5252 /// </summary>
53- private ISet < object > _externalObjects = new HashSet < object > ( ) ;
53+ private readonly HashSet < object > _externalObjects = new HashSet < object > ( ) ;
5454
5555 /// <summary>
5656 /// Callback for finalization of external object
@@ -60,7 +60,7 @@ public sealed class ChakraCoreJsEngine : JsEngineBase
6060 /// <summary>
6161 /// List of native function callbacks
6262 /// </summary>
63- private ISet < JsNativeFunction > _nativeFunctions = new HashSet < JsNativeFunction > ( ) ;
63+ private readonly HashSet < JsNativeFunction > _nativeFunctions = new HashSet < JsNativeFunction > ( ) ;
6464
6565 /// <summary>
6666 /// Gets a name of JS engine
@@ -92,6 +92,8 @@ static ChakraCoreJsEngine()
9292 /// </summary>
9393 public ChakraCoreJsEngine ( )
9494 {
95+ _externalObjectFinalizeCallback = ExternalObjectFinalizeCallback ;
96+
9597 try
9698 {
9799 _jsRuntime = JsRuntime . Create ( JsRuntimeAttributes . AllowScriptInterrupt , JsRuntimeVersion . VersionEdge , null ) ;
@@ -103,8 +105,6 @@ public ChakraCoreJsEngine()
103105 string . Format ( CoreStrings . Runtime_JsEngineNotLoaded ,
104106 EngineName , e . Message ) , EngineName , EngineVersion , e ) ;
105107 }
106-
107- _externalObjectFinalizeCallback = ExternalObjectFinalizeCallback ;
108108 }
109109
110110 /// <summary>
@@ -164,13 +164,11 @@ private void Dispose(bool disposing)
164164 if ( _externalObjects != null )
165165 {
166166 _externalObjects . Clear ( ) ;
167- _externalObjects = null ;
168167 }
169168
170169 if ( _nativeFunctions != null )
171170 {
172171 _nativeFunctions . Clear ( ) ;
173- _nativeFunctions = null ;
174172 }
175173
176174 _externalObjectFinalizeCallback = null ;
@@ -346,7 +344,10 @@ private void ExternalObjectFinalizeCallback(IntPtr data)
346344
347345 lock ( _executionSynchronizer )
348346 {
349- _externalObjects . Remove ( obj ) ;
347+ if ( _externalObjects != null )
348+ {
349+ _externalObjects . Remove ( obj ) ;
350+ }
350351 }
351352 }
352353
0 commit comments