[英]Usage of DynamicResource to an Application Level Resource Can Cause Leaks
似乎使用 DynamicResource 來引用應用程序級資源會導致發生 memory 泄漏。
請參閱此 WPF 論壇帖子以獲取更多信息、如何重現它以及一些解決方法。
我的問題是:還有其他人遇到過嗎? 如果是這樣,你是如何解決它的?
順便說一句,似乎有很多情況不會發生這種泄漏,也許最好的問題是:這種泄漏發生和不發生的情況到底是什么?
為方便起見,這里是重現它的代碼:
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
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();
}
}
第1頁.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>
第1頁.xaml.cs
public partial class Page1 : Page
{
public Page1()
{
InitializeComponent();
}
~Page1()
{
Trace.TraceInformation("Page1 Finalized.");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.