© 2026 Hedgehog Software, LLC

TwitterGitHubDiscord
More
CommunitiesDocsAboutTermsPrivacy
Search
Star
Setup for Free
C#C
C#•3y ago•
8 replies
SWEETPONY

❔ dataset memory leak

I found memory leak and I don't understand how to fix it
Test case:
public class MemoryLeaksTest
    : AsyncDisposable
{
    private readonly FastReport.Report _report;
    private readonly ReportOutputParameters _outputParameters;
    
    private const string ReportPath = "ByRequests.frx";
    
    public MemoryLeaksTest()
    {
        _report = new();
        
        _report.Load( ReportPath );

        _outputParameters = new()
        {
            Format = ReportOutputFormatType.PDF
        };
    }
    
    protected override void Dispose( bool disposing )
    {
        if ( disposing )
            _report.Dispose();

        base.Dispose( disposing );
    }
    
    public async Task Run( bool export )
    {
        using var dataSet = await FillDataSet();

        RegisterReportWithDataSet( dataSet );
        PrepareReport();
        
        if ( export )
            ExportReport();
    }

    private void ExportReport()
    {
        _report.Export(
            _outputParameters,
            $"test_exported_report_{Guid.NewGuid()}" );

        Console.WriteLine( @"report was exported" );
    }
    
    private void PrepareReport()
    {
        _report.Prepare();
    }
    
    private void RegisterReportWithDataSet( ByRequests dataSet )
    {
        _report.RegisterData( dataSet );
    }
    
    private async Task<ByRequests> FillDataSet()
    {
        var dataSet = new ByRequests();

        for ( var i = 0; i < 1_000_000; i++ )
        {
            dataSet._ByRequests.AddByRequestsRow(
                Status: $"status: {i}",
                Visitor: $"visitor {i}",
                Operator: $"operator {i}",
                HostSubject: $"host_subject {i}",
                CreationTime: $"creation_time {i}",
                Validity: $"validity {i}",
                Number: $"{i}" );

            if ( i % 10000 == 0 )
                Console.WriteLine( @$"progress: {i / 10000}" );
        }
        
        return dataSet;
    }
}
public class MemoryLeaksTest
    : AsyncDisposable
{
    private readonly FastReport.Report _report;
    private readonly ReportOutputParameters _outputParameters;
    
    private const string ReportPath = "ByRequests.frx";
    
    public MemoryLeaksTest()
    {
        _report = new();
        
        _report.Load( ReportPath );

        _outputParameters = new()
        {
            Format = ReportOutputFormatType.PDF
        };
    }
    
    protected override void Dispose( bool disposing )
    {
        if ( disposing )
            _report.Dispose();

        base.Dispose( disposing );
    }
    
    public async Task Run( bool export )
    {
        using var dataSet = await FillDataSet();

        RegisterReportWithDataSet( dataSet );
        PrepareReport();
        
        if ( export )
            ExportReport();
    }

    private void ExportReport()
    {
        _report.Export(
            _outputParameters,
            $"test_exported_report_{Guid.NewGuid()}" );

        Console.WriteLine( @"report was exported" );
    }
    
    private void PrepareReport()
    {
        _report.Prepare();
    }
    
    private void RegisterReportWithDataSet( ByRequests dataSet )
    {
        _report.RegisterData( dataSet );
    }
    
    private async Task<ByRequests> FillDataSet()
    {
        var dataSet = new ByRequests();

        for ( var i = 0; i < 1_000_000; i++ )
        {
            dataSet._ByRequests.AddByRequestsRow(
                Status: $"status: {i}",
                Visitor: $"visitor {i}",
                Operator: $"operator {i}",
                HostSubject: $"host_subject {i}",
                CreationTime: $"creation_time {i}",
                Validity: $"validity {i}",
                Number: $"{i}" );

            if ( i % 10000 == 0 )
                Console.WriteLine( @$"progress: {i / 10000}" );
        }
        
        return dataSet;
    }
}
C# banner
C#Join
We are a programming server aimed at coders discussing everything related to C# (CSharp) and .NET.
61,871Members
Resources
Was this page helpful?

Similar Threads

Recent Announcements

Similar Threads

Memory leak : WeakReferences
C#CC# / help
17mo ago
Debugging memory leak
C#CC# / help
17mo ago
✅ Memory leak or What?
C#CC# / help
12mo ago