Chart 资源析构问题
请问关闭窗口时怎么析构chart资源?每次打开一个新窗口都会让内存不断上升,有什么解决方法?demo在附件中。 回复 1楼子曰的帖子
谢谢您提供的Demo。
我们需要针对您的Demo进行测试,测试后给您反馈。 回复 1楼子曰的帖子
非常谢谢您的反馈。
经过测试,WPF平台下有内存泄露的情况发生。
我会将此问题提交到产品组,如果有任何反馈会在第一时间通知您。 回复 3楼Alice的帖子
好的,我们这边也挺急的,希望你们能快点。 回复 4楼子曰的帖子
我们已经提交到产品组,如果确认是bug会修复,或是提供相应的方案,我们都会尽快给您反馈。
很抱歉给您带来的不便。 这不是C1控件的问题,这是.NET机制。比如在window上只放一个MS button,如上操作,情况一样。GC不会再窗口关闭后立即回收。
另外,vshost进程会包含一些debug信息,所以它保留了部分对象,也是无法立即回收的原因。
不过我们提供了一段代码,可以优化这个问题,功能参考
public partial class WindowChart : Window, IDisposable
{
public WindowChart()
{
InitializeComponent();
//Chart.Data.Children.Add(new XYDataSeries
//{
// RenderMode = RenderMode.Default,
// XValuesSource = ReviewCpetParas.GetInstance().Time,
// ValuesSource = ReviewCpetParas.GetInstance().Volume,
// ConnectionStrokeThickness = 2,
// ConnectionStroke = new SolidColorBrush(Colors.Red),
//});
//Chart2.Data.Children.Add(new XYDataSeries
//{
// RenderMode = RenderMode.Default,
// XValuesSource = ReviewCpetParas.GetInstance().Time,
// ValuesSource = ReviewCpetParas.GetInstance().Flow,
// ConnectionStrokeThickness = 2,
// ConnectionStroke = new SolidColorBrush(Colors.Red),
//});
}
public void Dispose()
{
this.Chart.Content = null;
this.Chart.View.DataContext = null;
this.Chart.View = null;
this.Chart.Data.DataContext = null;
this.Chart.Data = null;
this.Chart.DataContext = null;
this.Chart2.Content = null;
this.Chart2.DataContext = null;
this.Chart2.View = null;
this.Chart2.Data.DataContext = null;
this.Chart2.Data = null;
this.Chart2.DataContext = null;
Root.Children.Clear();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Dispose();
this.Close();
GC.WaitForPendingFinalizers();
GC.Collect();
}
}
回复 6楼gw0506的帖子
您好,用您的方法我测试了下,还是出现内存一直增加的情况,
因为我们的项目用到的chart比较多,所以这种情况还是不能接受,还可以进行进一步优化吗? 再没有优化的空间了。原因我也给你讲了,这是.NET GC机制所致,他就是这个样子。
更进一步,更具有针对性的办法还得你这表找了。用antiprofile去分析一下。
页:
[1]