将多个oxyplot模型导出为png时的性能问题

问题描述 投票:1回答:1

摘要

当有多个图表应该作为PNG导出到文件时,它会引入内存性能问题并阻止UI,直到保存所有图表。

文档说明如下:

警告:经常在很短的时间内调用ExportToBitmap方法可能会导致内存使用率过高。

问题是ExportToFile也称ExportToBitmap,这是内存问题的来源。

当尝试在后台线程上运行此命令或使用Parallel.ForEach时,应用程序将崩溃并显示以下消息

调用线程必须是STA,因为许多UI组件都需要这个。

如何在for循环中多次调用时提高ExportToFile的性能?

c# performance oxyplot
1个回答
-1
投票

如果有ListPlotModel对象应该导出到文件系统为每个绘图模型创建Task。问题是ExportToBitmap需要在UI线程上运行。要解决此问题,请创建scheduler并使用它启动任务。

var scheduler = TaskScheduler.FromCurrentSynchronizationContext();
foreach(var model in models) { // models is list of PlotModel objects
    var task = new Task(() => {
        var pngExporter = new PngExporter {
            Width = 1200,
            Height = 742,
            Background = OxyColors.White
        };
        pngExporter.ExportToFile(model, path); // define your own path
    });
    task.Start(scheduler);
}
© www.soinside.com 2019 - 2024. All rights reserved.