C#C
C#3y ago
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;
    }
}
Was this page helpful?