Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 使用dynamicdatadisplay vb.net的内存泄漏_Wpf_Vb.net_Charts_Memory Leaks - Fatal编程技术网

Wpf 使用dynamicdatadisplay vb.net的内存泄漏

Wpf 使用dynamicdatadisplay vb.net的内存泄漏,wpf,vb.net,charts,memory-leaks,Wpf,Vb.net,Charts,Memory Leaks,我目前正在使用DynamicDataDisplay在用户界面上显示频谱,它工作得很好,但有一个巨大的内存泄漏(大约1-2MB/周期)。当我用一个新的图形更新它时,它似乎并没有释放所有的内存。还有其他人遇到过这个问题吗?我该如何着手解决这个问题呢? 提前谢谢。请参阅下面的代码 Dim P1Chart As New Microsoft.Research.DynamicDataDisplay.ChartPlotter() Dim P1ChartDateTime As New Windows.Contr

我目前正在使用DynamicDataDisplay在用户界面上显示频谱,它工作得很好,但有一个巨大的内存泄漏(大约1-2MB/周期)。当我用一个新的图形更新它时,它似乎并没有释放所有的内存。还有其他人遇到过这个问题吗?我该如何着手解决这个问题呢? 提前谢谢。请参阅下面的代码

Dim P1Chart As New Microsoft.Research.DynamicDataDisplay.ChartPlotter()
Dim P1ChartDateTime As New Windows.Controls.Label()

…………………….

‘First remove old line graph from chart
ClearSpectrum(iTabIndex)

‘Load arrays with new spectral data
For SpectCtr = 0 To ScanElements
   If Spectrum = ScanType.Absorbance Then
      x(SpectCtr) = SpectCtr * 0.5 + 800.0 ‘Convert to wavelength if absorbance spectra
   Else
      x(SpectCtr) = SpectCtr
   End If

   y(SpectCtr) = sr.ReadLine()
Next

Dim xDataSource = AsXDataSource(x)
Dim yDataSource = AsYDataSource(y)

Dim xyDataSource As New CompositeDataSource(xDataSource, yDataSource)

Select Case StreamNumber
Case 1
   P1Chart.AddLineGraph(xyDataSource, Colors.Red, 1, “Probe A”)
   P1ChartDateTime.Content = String.Format(“Time: {0}, X-Axis: {1}”, FileSaveTime, xAxisTitle)
Case 2
   P2Chart.AddLineGraph(xyDataSource, Colors.Red, 1, “Probe B”)
   P2ChartDateTime.Content = String.Format(“Time: {0}, X-Axis: {1}”, FileSaveTime, xAxisTitle)
End Select

………

Private Sub ClearSpectrum(ByVal iTabIndex As Integer)
Dim nIndex As Integer

Select Case iTabIndex
Case 1
   For Each child1 As IPlotterElement In P1Chart.Children
      If TypeOf child1 Is Microsoft.Research.DynamicDataDisplay.LineGraph Then
         RemoveList.Add(child1)
      End If
   Next

For Each child1 In RemoveList
    P1Chart.Children.Remove(child1)
Next
……………..
RemoveList.Clear()

如果是WPF,则应添加该标记。您可以尝试使用GC.Collect()调用垃圾收集器,并且子项的末尾显示您如何确定内存泄漏?你用了什么工具?谢谢你的垃圾收集器建议。Chris Dunaway:我使用Process.GetCurrentProcess()方法获取每个周期的工作集,然后将其写入文件。在我绘制了日志图之后,很明显,随着时间的推移,内存使用会增加