pet*_*ter 5 silverlight memory-leaks telerik silverlight-4.0
我在Silverlight应用程序中有内存泄漏,我使用此信息开始,
哪个很棒.我已经提取了一些代码来解决这个问题.所以代码看起来像这样,一个子窗口,
<controls:ChildWindow x:Class="MemoryLeakTesting2.ConfirmDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
xmlns:telerik="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls"
Width="375" >
<Grid Margin="2">
<telerik:RadButton Content="OK" Click="OnClick" Command="{Binding CancelActionCommand}" Width="75" Height="23" HorizontalAlignment="Right" Margin="0,12,0,0" Grid.Row="1" />
</Grid>
</controls:ChildWindow>
Run Code Online (Sandbox Code Playgroud)
背后的代码就是这个,
public partial class ConfirmDialog : ChildWindow
{
public ConfirmDialog()
{
InitializeComponent();
}
[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
private void OnClick(object sender, RoutedEventArgs e)
{
DialogResult = true;
}
}
Run Code Online (Sandbox Code Playgroud)
我从我的主要silverlight页面中的按钮点击事件中调用此代码,如下所示,
private void Button_Click(object sender, RoutedEventArgs e)
{
ConfirmDialog dialog = new ConfirmDialog();
dialog.Show();
}
Run Code Online (Sandbox Code Playgroud)
每次打开弹出窗口并关闭它时都会泄漏内存.我使用WinDbg,它实际上表明每次弹出和关闭后都不会释放ConfirmDialog实例?
该公司Button.Command因泄露而臭名昭著。我的猜测是该值CancelActionCommand引用了一个长期存在的对象。他们Button不会从ICommand.CanExecuteChanged事件中解脱出来。您应该考虑使用弱事件模式来限制可泄漏的表面积。
| 归档时间: |
|
| 查看次数: |
1727 次 |
| 最近记录: |