Skip to content

Commit 3d56a7f

Browse files
Implemented improved disposal of PossibleAddends.
1 parent d57dea2 commit 3d56a7f

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

Open.Collections.Numeric.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<PackageProjectUrl>https://github.com/Open-NET-Libraries/Open.Collections.Numeric/</PackageProjectUrl>
1818
<RepositoryUrl>https://github.com/Open-NET-Libraries/Open.Collections.Numeric/</RepositoryUrl>
1919
<RepositoryType>git</RepositoryType>
20-
<Version>1.5.2</Version>
20+
<Version>1.5.3</Version>
2121
<PackageReleaseNotes></PackageReleaseNotes>
2222
<PackageLicenseExpression>MIT</PackageLicenseExpression>
2323
<PublishRepositoryUrl>true</PublishRepositoryUrl>

PossibleAddends.cs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,13 @@ public PossibleAddends()
1515
readonly ConcurrentDictionary<int, ConcurrentDictionary<int, IReadOnlyList<IReadOnlyList<int>>>> Cache = new();
1616

1717
public IReadOnlyList<IReadOnlyList<int>> UniqueAddendsFor(int sum, int count)
18-
=> Cache
18+
{
19+
AssertIsAlive(true);
20+
21+
return Cache
1922
.GetOrAdd(count, key => new ConcurrentDictionary<int, IReadOnlyList<IReadOnlyList<int>>>())
2023
.GetOrAdd(sum, key => GetUniqueAddends(sum, count).Memoize());
24+
}
2125

2226
public IEnumerable<IReadOnlyList<int>> GetUniqueAddends(int sum, int count)
2327
{
@@ -58,6 +62,16 @@ public IEnumerable<IReadOnlyList<int>> GetUniqueAddends(int sum, int count)
5862
}
5963
}
6064

61-
protected override void OnDispose() => Cache.Clear();
65+
protected override void OnDispose()
66+
{
67+
foreach(var c in Cache.Values)
68+
{
69+
foreach (var s in c.Values)
70+
{
71+
if(s is IDisposable d) d.Dispose();
72+
}
73+
}
74+
Cache.Clear();
75+
}
6276
}
6377
}

0 commit comments

Comments
 (0)