내 프로그램에서 Nevron 차트를 사용합니다. 다음 코드는 클릭 버튼 이벤트입니다 : 클릭 할 때마다 프로그램이 많은 메모리를 할당하고, 심지어 GC.Collect()
가 메모리를 청소하지 않습니다 후새 인스턴스 만들기 많은 메모리를 사용합니다
this.nChartControl1 = new NChartControl();
// add data to chart ...
, 나는 하나 개의 Nevron 차트의 인스턴스마다 데이터를 정리를 사용하는 경우 그리고 나서 모든 것이 OK 인 새로운 데이터를 추가하십시오.
무엇이 문제입니까?
업데이트 1 : 여기에 메모리의 새로운 조각을 할당하기 전에 기능을
private void button_Click(object sender, RoutedEventArgs e)
{
//if (nChartControl1 == null)
{
this.nChartControl1 = new NChartControl();
}
// clear data
nChartControl1.Charts.Clear();
nChartControl1.Panels.Clear();
GC.Collect();
// empty the grid then add NevronChart
this.grid.Children.Clear();
this.grid.Children.Add(nChartControl1);
nChartControl1.BackgroundStyle.FrameStyle.Visible = false;
// set a chart title
NLabel title = nChartControl1.Labels.AddHeader("2D Line Chart");
// setup chart
NCartesianChart chart = new NCartesianChart();
nChartControl1.Panels.Add(chart);
chart.DockMode = PanelDockMode.Fill;
chart.Margins = new NMarginsL(2, 0, 2, 2);
chart.Projection.SetPredefinedProjection(PredefinedProjection.Orthogonal);
chart.LightModel.EnableLighting = false;
chart.Axis(StandardAxis.Depth).Visible = false;
chart.Wall(ChartWallType.Floor).Visible = false;
chart.Wall(ChartWallType.Left).Visible = false;
chart.BoundsMode = BoundsMode.Stretch;
chart.Height = 40;
chart.RangeSelections.Add(new NRangeSelection());
chart.Axis(StandardAxis.PrimaryX).ScrollBar.Visible = true;
chart.Axis(StandardAxis.PrimaryY).ScrollBar.Visible = true;
// setup the line series
NLineSeries line = (NLineSeries)chart.Series.Add(SeriesType.Line);
//line.Values.FillRandom(new Random(), 10);
SetRandomData(line);
line.DataLabelStyle.Visible = false;
line.Legend.Mode = SeriesLegendMode.DataPoints;
line.ShadowStyle.Type = ShadowType.GaussianBlur;
line.ShadowStyle.Offset = new NPointL(new NLength(3, NGraphicsUnit.Pixel), new NLength(3, NGraphicsUnit.Pixel));
line.ShadowStyle.FadeLength = new NLength(5, NGraphicsUnit.Pixel);
line.ShadowStyle.Color = System.Drawing.Color.FromArgb(55, 0, 0, 0);
line.LineSegmentShape = LineSegmentShape.Line;
nChartControl1.Controller.Tools.Add(new NSelectorTool());
nChartControl1.Controller.Tools.Add(new NAxisScrollTool());
nChartControl1.Controller.Tools.Add(new NDataZoomTool());
NDataPanTool dpt = new NDataPanTool();
nChartControl1.Controller.Tools.Add(dpt);
nChartControl1.Legends.Clear();
nChartControl1.Refresh();
}
새 인스턴스를 할당하기 전에 기존 nChartControl1을 폐기해야합니다. –
"매번 데이터를 정리하십시오."정확히 의미하는 것을 자세히 설명 할 수 있습니까? –
@ LasseV.Karlsen 전체 기능이 업데이트되었습니다. – mojtaba357