Bir uygulama düzeyi kaynağına başvurmak için bir DynamicResource kullanmak, bellek sızıntılarının oluşmasına neden olabilir.DynamicResource'ın bir Uygulama Seviyesi Kaynağına Kullanımı Sızıntılara Neden Olabilir
Daha fazla bilgi, nasıl yeniden üretileceği ve bazı geçici çözümler için lütfen bu WPF forumu post'a bakın.
Soruma sorum: başka birisinin sorunu var mı? Eğer öyleyse, bu konuda nasıl çalıştın? Bu arada
, orada bu kaçak oluşmaz birçok durum gibi görünüyor ve belki en iyi soru: tam olarak bu sızıntısı oluşur ve oluşmaz durumlar nelerdir?
App.xaml
<Application
x:Class="WeakReferences.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="Window1.xaml"
>
<Application.Resources>
<SolidColorBrush x:Key="MyBrush" Color="SkyBlue"/>
</Application.Resources>
</Application>
Window1.xaml
<Window
x:Class="WeakReferences.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1"
Height="300"
Width="300"
>
<Grid>
<Button
Name="ReleaseButton"
Content="Release Reference"
Click="Button_Click"
/>
</Grid>
</Window>
Window1.xaml.cs
: Burada kolaylık sağlamak içinolarak tekrar verir koddur
public partial class Window1 : Window
{
object p;
public Window1()
{
InitializeComponent();
p = new Page1();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
p = null;
GC.Collect();
}
}
Page1.xaml
<Page
x:Class="WeakReferences.Page1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Page1"
Background="{DynamicResource MyBrush}"
>
<Grid>
</Grid>
</Page>
Page1.xaml.cs
public partial class Page1 : Page
{
public Page1()
{
InitializeComponent();
}
~Page1()
{
Trace.TraceInformation("Page1 Finalized.");
}
}