FILE-04Large file, bounded memory

What this test proves

Large multi-frame files open without loading pixel data into memory.

How it is tested

  1. Write a 300 MiB MR file (600 frames of 512 x 512 x 16-bit) to a temp folder with a plain writer, not DicomKit
  2. Open it with DicomFile.OpenAsync and measure managed allocations
  3. Read frames 0, 1, 299, 598 and 599 through LazyDicomPixelData and compare each with the generator
  4. Pass if opening allocates less than 64 MiB, less than 32 MiB stays held after the reads, and all frames match; the file is deleted

Expected result for each license type

  • No key: Asks for key: stops and asks for a license key
  • Developer: Works
  • Pro: Works
  • Enterprise: Works
  • Expired: Works
  • Revoked: Works

Results

License Expected .NET 8.0 .NET 9.0 .NET 10.0 Result
No key Asks for key Pass
Asked for key
Pass
Asked for key
Pass
Asked for key
Pass
Developer Works Pass
Worked
Pass
Worked
Pass
Worked
Pass
Pro Works Pass
Worked
Pass
Worked
Pass
Worked
Pass
Enterprise Works Pass
Worked
Pass
Worked
Pass
Worked
Pass
Expired Works Pass
Worked
Pass
Worked
Pass
Worked
Pass
Revoked Works Pass
Worked
Pass
Worked
Pass
Worked
Pass

Recorded evidence

Captured by the automated test during the run, per license and .NET version.

License.NETCapturedTime
No key .NET 8.0
DicomKitLicenseException: DicomKit needs a license key. Get a free Developer key at https://dicomkit.plogic.dev/DeveloperKey (paid plans for production: https://dicomkit.plogic.dev/Pricing;
license state KeyRequired (NoKey)
Test: DicomKit.ReleaseTests.ReleaseMatrix.Case "FILE-04 [none] [net8.0] Large file, bounded memory(caseId: "FILE-04", license: "none")"
187 ms
No key .NET 9.0
DicomKitLicenseException: DicomKit needs a license key. Get a free Developer key at https://dicomkit.plogic.dev/DeveloperKey (paid plans for production: https://dicomkit.plogic.dev/Pricing;
license state KeyRequired (NoKey)
Test: DicomKit.ReleaseTests.ReleaseMatrix.Case "FILE-04 [none] [net9.0] Large file, bounded memory(caseId: "FILE-04", license: "none")"
179 ms
No key .NET 10.0
DicomKitLicenseException: DicomKit needs a license key. Get a free Developer key at https://dicomkit.plogic.dev/DeveloperKey (paid plans for production: https://dicomkit.plogic.dev/Pricing;
license state KeyRequired (NoKey)
Test: DicomKit.ReleaseTests.ReleaseMatrix.Case "FILE-04 [none] [net10.0] Large file, bounded memory(caseId: "FILE-04", license: "none")"
183 ms
Developer .NET 8.0
generated large_mr_512x512x600.dcm: 314573458 bytes, MR, Explicit VR LE, 512x512x16-bit x 600 frames (written in 162 ms)
DicomFile.OpenAsync took 1 ms and allocated 38 KiB managed memory; 1023 KiB retained after frame reads
LazyDicomPixelData: FrameCount=600, frames 0,1,299,598,599 read (524288 bytes each) and equal to the generator
Test: DicomKit.ReleaseTests.ReleaseMatrix.Case "FILE-04 [developer] [net8.0] Large file, bounded memory(caseId: "FILE-04", license: "developer")"
191 ms
Developer .NET 9.0
generated large_mr_512x512x600.dcm: 314573458 bytes, MR, Explicit VR LE, 512x512x16-bit x 600 frames (written in 168 ms)
DicomFile.OpenAsync took 1 ms and allocated 38 KiB managed memory; 1022 KiB retained after frame reads
LazyDicomPixelData: FrameCount=600, frames 0,1,299,598,599 read (524288 bytes each) and equal to the generator
Test: DicomKit.ReleaseTests.ReleaseMatrix.Case "FILE-04 [developer] [net9.0] Large file, bounded memory(caseId: "FILE-04", license: "developer")"
199 ms
Developer .NET 10.0
generated large_mr_512x512x600.dcm: 314573458 bytes, MR, Explicit VR LE, 512x512x16-bit x 600 frames (written in 165 ms)
DicomFile.OpenAsync took 1 ms and allocated 38 KiB managed memory; 1022 KiB retained after frame reads
LazyDicomPixelData: FrameCount=600, frames 0,1,299,598,599 read (524288 bytes each) and equal to the generator
Test: DicomKit.ReleaseTests.ReleaseMatrix.Case "FILE-04 [developer] [net10.0] Large file, bounded memory(caseId: "FILE-04", license: "developer")"
194 ms
Pro .NET 8.0
generated large_mr_512x512x600.dcm: 314573458 bytes, MR, Explicit VR LE, 512x512x16-bit x 600 frames (written in 166 ms)
DicomFile.OpenAsync took 1 ms and allocated 38 KiB managed memory; 1022 KiB retained after frame reads
LazyDicomPixelData: FrameCount=600, frames 0,1,299,598,599 read (524288 bytes each) and equal to the generator
Test: DicomKit.ReleaseTests.ReleaseMatrix.Case "FILE-04 [pro] [net8.0] Large file, bounded memory(caseId: "FILE-04", license: "pro")"
195 ms
Pro .NET 9.0
generated large_mr_512x512x600.dcm: 314573458 bytes, MR, Explicit VR LE, 512x512x16-bit x 600 frames (written in 166 ms)
DicomFile.OpenAsync took 1 ms and allocated 39 KiB managed memory; 1023 KiB retained after frame reads
LazyDicomPixelData: FrameCount=600, frames 0,1,299,598,599 read (524288 bytes each) and equal to the generator
Test: DicomKit.ReleaseTests.ReleaseMatrix.Case "FILE-04 [pro] [net9.0] Large file, bounded memory(caseId: "FILE-04", license: "pro")"
195 ms
Pro .NET 10.0
generated large_mr_512x512x600.dcm: 314573458 bytes, MR, Explicit VR LE, 512x512x16-bit x 600 frames (written in 165 ms)
DicomFile.OpenAsync took 1 ms and allocated 39 KiB managed memory; 1022 KiB retained after frame reads
LazyDicomPixelData: FrameCount=600, frames 0,1,299,598,599 read (524288 bytes each) and equal to the generator
Test: DicomKit.ReleaseTests.ReleaseMatrix.Case "FILE-04 [pro] [net10.0] Large file, bounded memory(caseId: "FILE-04", license: "pro")"
195 ms
Enterprise .NET 8.0
generated large_mr_512x512x600.dcm: 314573458 bytes, MR, Explicit VR LE, 512x512x16-bit x 600 frames (written in 164 ms)
DicomFile.OpenAsync took 1 ms and allocated 38 KiB managed memory; 1022 KiB retained after frame reads
LazyDicomPixelData: FrameCount=600, frames 0,1,299,598,599 read (524288 bytes each) and equal to the generator
Test: DicomKit.ReleaseTests.ReleaseMatrix.Case "FILE-04 [enterprise] [net8.0] Large file, bounded memory(caseId: "FILE-04", license: "enterprise")"
193 ms
Enterprise .NET 9.0
generated large_mr_512x512x600.dcm: 314573458 bytes, MR, Explicit VR LE, 512x512x16-bit x 600 frames (written in 157 ms)
DicomFile.OpenAsync took 1 ms and allocated 38 KiB managed memory; 1022 KiB retained after frame reads
LazyDicomPixelData: FrameCount=600, frames 0,1,299,598,599 read (524288 bytes each) and equal to the generator
Test: DicomKit.ReleaseTests.ReleaseMatrix.Case "FILE-04 [enterprise] [net9.0] Large file, bounded memory(caseId: "FILE-04", license: "enterprise")"
184 ms
Enterprise .NET 10.0
generated large_mr_512x512x600.dcm: 314573458 bytes, MR, Explicit VR LE, 512x512x16-bit x 600 frames (written in 153 ms)
DicomFile.OpenAsync took 1 ms and allocated 38 KiB managed memory; 1022 KiB retained after frame reads
LazyDicomPixelData: FrameCount=600, frames 0,1,299,598,599 read (524288 bytes each) and equal to the generator
Test: DicomKit.ReleaseTests.ReleaseMatrix.Case "FILE-04 [enterprise] [net10.0] Large file, bounded memory(caseId: "FILE-04", license: "enterprise")"
180 ms
Expired .NET 8.0
generated large_mr_512x512x600.dcm: 314573458 bytes, MR, Explicit VR LE, 512x512x16-bit x 600 frames (written in 161 ms)
DicomFile.OpenAsync took 1 ms and allocated 38 KiB managed memory; 1022 KiB retained after frame reads
LazyDicomPixelData: FrameCount=600, frames 0,1,299,598,599 read (524288 bytes each) and equal to the generator
Test: DicomKit.ReleaseTests.ReleaseMatrix.Case "FILE-04 [expired] [net8.0] Large file, bounded memory(caseId: "FILE-04", license: "expired")"
190 ms
Expired .NET 9.0
generated large_mr_512x512x600.dcm: 314573458 bytes, MR, Explicit VR LE, 512x512x16-bit x 600 frames (written in 163 ms)
DicomFile.OpenAsync took 1 ms and allocated 38 KiB managed memory; 1022 KiB retained after frame reads
LazyDicomPixelData: FrameCount=600, frames 0,1,299,598,599 read (524288 bytes each) and equal to the generator
Test: DicomKit.ReleaseTests.ReleaseMatrix.Case "FILE-04 [expired] [net9.0] Large file, bounded memory(caseId: "FILE-04", license: "expired")"
191 ms
Expired .NET 10.0
generated large_mr_512x512x600.dcm: 314573458 bytes, MR, Explicit VR LE, 512x512x16-bit x 600 frames (written in 163 ms)
DicomFile.OpenAsync took 1 ms and allocated 38 KiB managed memory; 1022 KiB retained after frame reads
LazyDicomPixelData: FrameCount=600, frames 0,1,299,598,599 read (524288 bytes each) and equal to the generator
Test: DicomKit.ReleaseTests.ReleaseMatrix.Case "FILE-04 [expired] [net10.0] Large file, bounded memory(caseId: "FILE-04", license: "expired")"
190 ms
Revoked .NET 8.0
generated large_mr_512x512x600.dcm: 314573458 bytes, MR, Explicit VR LE, 512x512x16-bit x 600 frames (written in 164 ms)
DicomFile.OpenAsync took 1 ms and allocated 38 KiB managed memory; 1023 KiB retained after frame reads
LazyDicomPixelData: FrameCount=600, frames 0,1,299,598,599 read (524288 bytes each) and equal to the generator
Test: DicomKit.ReleaseTests.ReleaseMatrix.Case "FILE-04 [revoked] [net8.0] Large file, bounded memory(caseId: "FILE-04", license: "revoked")"
192 ms
Revoked .NET 9.0
generated large_mr_512x512x600.dcm: 314573458 bytes, MR, Explicit VR LE, 512x512x16-bit x 600 frames (written in 163 ms)
DicomFile.OpenAsync took 1 ms and allocated 39 KiB managed memory; 1022 KiB retained after frame reads
LazyDicomPixelData: FrameCount=600, frames 0,1,299,598,599 read (524288 bytes each) and equal to the generator
Test: DicomKit.ReleaseTests.ReleaseMatrix.Case "FILE-04 [revoked] [net9.0] Large file, bounded memory(caseId: "FILE-04", license: "revoked")"
191 ms
Revoked .NET 10.0
generated large_mr_512x512x600.dcm: 314573458 bytes, MR, Explicit VR LE, 512x512x16-bit x 600 frames (written in 165 ms)
DicomFile.OpenAsync took 1 ms and allocated 39 KiB managed memory; 1023 KiB retained after frame reads
LazyDicomPixelData: FrameCount=600, frames 0,1,299,598,599 read (524288 bytes each) and equal to the generator
Test: DicomKit.ReleaseTests.ReleaseMatrix.Case "FILE-04 [revoked] [net10.0] Large file, bounded memory(caseId: "FILE-04", license: "revoked")"
195 ms

Test run

Run
2ce13edc-f525-4ffb-ae07-648e5221cef9
Started (UTC)
2026-10-26 21:15:23, finished 21:21:01
Source commit
b804fb7
Environment
Microsoft Windows 11 Pro 10.0.26200 build 26200; Microsoft.AspNetCore.App 8.0.29, Microsoft.AspNetCore.App 9.0.18, Microsoft.AspNetCore.App 10.0.12, Microsoft.NETCore.App 3.1.32, Microsoft.NETCore.App 8.0.3, Microsoft.NETCore.App 8.0.29, Microsoft.NETCore.App 9.0.18, Microsoft.NETCore.App 10.0.12, Microsoft.WindowsDesktop.App 8.0.3, Microsoft.WindowsDesktop.App 8.0.29, Microsoft.WindowsDesktop.App 9.0.18, Microsoft.WindowsDesktop.App 10.0.12; Visual Studio Community 2026 18.10.3 (18.10.12224.181)
DicomKit
1.0.0 SHA-256 96ada39062c07bca37511abfb6baac0a44d914fb705bac01d77cb02146fdac0e
DicomKit.Cli
1.0.0 SHA-256 f8ffe70dc375cfe0d60881027e7cedb2502bc78ec5f5037f1d41b6c2481e1c84
DicomKit.Imaging
1.0.0 SHA-256 015b51ea833039d934ba153cae50d393fb77846430ca3fc3d65b4fb8cf4346ed
DicomKit.Web
1.0.0 SHA-256 2a2f4f7f02e1849929294062bee7dd8f3a24449428469c1fddb6982e77218a7b
DicomKit.Web.AspNetCore
1.0.0 SHA-256 daa1105881f1c0b60ca9c788d52d41445bd653a9d190c8862a2b2b1386d5e37c