diff --git a/src/api/dotnet/UserPropagator.cs b/src/api/dotnet/UserPropagator.cs index 9b4fbc9b7..b9cd4dc39 100644 --- a/src/api/dotnet/UserPropagator.cs +++ b/src/api/dotnet/UserPropagator.cs @@ -37,7 +37,7 @@ namespace Microsoft.Z3 /// /// Propagator context for .Net /// - public class UserPropagator + public class UserPropagator : IDisposable { /// /// Delegate type for fixed callback @@ -205,10 +205,20 @@ namespace Microsoft.Z3 } /// - /// Release provate memory. + /// Release private memory. /// ~UserPropagator() { + Dispose(); + } + + /// + /// Must be called. The object will not be garbage collected automatically even if the context is disposed + /// + public virtual void Dispose() + { + if (!gch.IsAllocated) + return; gch.Free(); if (solver == null) ctx.Dispose();