@@ -23,6 +23,7 @@ class ManagedValueManager : JniRuntime.JniValueManager
2323{
2424 const DynamicallyAccessedMemberTypes Constructors = DynamicallyAccessedMemberTypes . PublicConstructors | DynamicallyAccessedMemberTypes . NonPublicConstructors ;
2525
26+ readonly Lock _registeredInstancesLock = new ( ) ;
2627 readonly Dictionary < int , List < ReferenceTrackingHandle > > RegisteredInstances = new ( ) ;
2728 readonly ConcurrentQueue < IntPtr > CollectedContexts = new ( ) ;
2829
@@ -62,7 +63,7 @@ public unsafe override void CollectPeers ()
6263 Debug . Assert ( contextPtr != IntPtr . Zero , "CollectedContexts should not contain null pointers." ) ;
6364 HandleContext * context = ( HandleContext * ) contextPtr ;
6465
65- lock ( RegisteredInstances ) {
66+ lock ( _registeredInstancesLock ) {
6667 Remove ( context ) ;
6768 }
6869
@@ -101,7 +102,7 @@ public override void AddPeer (IJavaPeerable value)
101102 JniObjectReference . Dispose ( ref r , JniObjectReferenceOptions . CopyAndDispose ) ;
102103 }
103104 int key = value . JniIdentityHashCode ;
104- lock ( RegisteredInstances ) {
105+ lock ( _registeredInstancesLock ) {
105106 List < ReferenceTrackingHandle > ? peers ;
106107 if ( ! RegisteredInstances . TryGetValue ( key , out peers ) ) {
107108 peers = [ new ReferenceTrackingHandle ( value ) ] ;
@@ -154,7 +155,7 @@ void WarnNotReplacing (int key, IJavaPeerable ignoreValue, IJavaPeerable keepVal
154155
155156 int key = GetJniIdentityHashCode ( reference ) ;
156157
157- lock ( RegisteredInstances ) {
158+ lock ( _registeredInstancesLock ) {
158159 if ( ! RegisteredInstances . TryGetValue ( key , out List < ReferenceTrackingHandle > ? peers ) )
159160 return null ;
160161
@@ -182,7 +183,7 @@ public override void RemovePeer (IJavaPeerable value)
182183 if ( value == null )
183184 throw new ArgumentNullException ( nameof ( value ) ) ;
184185
185- lock ( RegisteredInstances ) {
186+ lock ( _registeredInstancesLock ) {
186187 int key = value . JniIdentityHashCode ;
187188 if ( ! RegisteredInstances . TryGetValue ( key , out List < ReferenceTrackingHandle > ? peers ) )
188189 return ;
@@ -278,7 +279,7 @@ public override List<JniSurfacedPeerInfo> GetSurfacedPeers ()
278279 // Remove any collected contexts before iterating over all the registered instances
279280 CollectPeers ( ) ;
280281
281- lock ( RegisteredInstances ) {
282+ lock ( _registeredInstancesLock ) {
282283 var peers = new List < JniSurfacedPeerInfo > ( RegisteredInstances . Count ) ;
283284 foreach ( var ( identityHashCode , referenceTrackingHandles ) in RegisteredInstances ) {
284285 foreach ( var peer in referenceTrackingHandles ) {
0 commit comments