Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.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
C# 如何解决WPF中由DependencyProperty重写元数据引起的内存泄漏?_C#_.net_Wpf_Memory Leaks - Fatal编程技术网

C# 如何解决WPF中由DependencyProperty重写元数据引起的内存泄漏?

C# 如何解决WPF中由DependencyProperty重写元数据引起的内存泄漏?,c#,.net,wpf,memory-leaks,C#,.net,Wpf,Memory Leaks,我有一个WPF应用程序。我有一个按钮,在其中打开模式窗口,使用ShowDialog()进行此操作。我发现我的模式窗口是内存泄漏的原因,它永远不会被处理,每次都会被分配一个新实例 在深入研究代码并使用ANTS profiler之后,我发现,导致泄漏的原因是以下几行。我正在为我的应用程序使用自定义样式。当我从XAML文件中删除样式时,窗口得到了正确的处理 这个静态构造函数有什么问题?这是泄漏的原因。 static StyleWindow() { StyleProperty.Overrid

我有一个WPF应用程序。我有一个按钮,在其中打开模式窗口,使用ShowDialog()进行此操作。我发现我的模式窗口是内存泄漏的原因,它永远不会被处理,每次都会被分配一个新实例

在深入研究代码并使用ANTS profiler之后,我发现,导致泄漏的原因是以下几行。我正在为我的应用程序使用自定义样式。当我从XAML文件中删除样式时,窗口得到了正确的处理

这个静态构造函数有什么问题?这是泄漏的原因。

   static StyleWindow()
{
   StyleProperty.OverrideMetadata(typeof(StyleWindow),new 
   FrameworkPropertyMetadata(Application.Current.FindResource(typeof(StyleWindow))));
} 

//StyleProperty definition
public static readonly DependencyProperty StyleProperty;

非常感谢,感谢您的帮助和建议

为什么要为此使用静态ctor?如果在类中定义依赖属性
StyleProperty
,我不希望在同一属性上看到
OverrideMetadata
。您应该能够在注册依赖项属性期间设置元数据。为什么要为此使用静态ctor?如果在类中定义依赖项属性
StyleProperty
,我不希望在同一属性上看到
OverrideMetadata
。您应该能够在注册依赖项属性期间设置元数据。