C# Avalon对接管理器内存泄漏
我注意到我的代码中有内存泄漏 我使用Ants内存分析器来查看内存泄漏的来源 我正在做的唯一操作是在应用程序中切换选项卡 我已经从WPF扩展工具包2.0.0.0->2.5.0.0升级,但这并没有解决我的问题 这是来自蚂蚁的图表 有一个collectionchangedeventhandler,它有7个实例 所有内容都位于C# Avalon对接管理器内存泄漏,c#,events,memory-leaks,wpf-extended-toolkit,C#,Events,Memory Leaks,Wpf Extended Toolkit,我注意到我的代码中有内存泄漏 我使用Ants内存分析器来查看内存泄漏的来源 我正在做的唯一操作是在应用程序中切换选项卡 我已经从WPF扩展工具包2.0.0.0->2.5.0.0升级,但这并没有解决我的问题 这是来自蚂蚁的图表 有一个collectionchangedeventhandler,它有7个实例 所有内容都位于可观测集合 以下是我的部分代码: public class ViewerBaseViewModel : ViewModelBase { protecte
可观测集合
以下是我的部分代码:
public class ViewerBaseViewModel : ViewModelBase
{
protected bool IsViewerMode; // Used to identify if the image was loaded from a file to the viewer mode
protected ImageManager _imageManager;
private readonly IMessageBoxService _messageBoxService;
private readonly ProgressIndicatorViewModel _progressIndicator;
protected ImageCollection CurrentImageCollection { get; set; }
protected int _imageTabCounter = 1;
private Dictionary<int, List<ImageViewerTabItem>> _groupedImages;
public ObservableCollection<BaseViewerTabItem> OpenViewers { get; private set; }
public类ViewerBaseViewModel:ViewModelBase
{
受保护的bool IsViewerMode;//用于标识图像是否从文件加载到查看器模式
受保护的ImageManager\u ImageManager;
专用只读IMessageBoxService(U messageBoxService);
私有只读progressIndicator或IEWModel\u progressIndicator;
受保护的ImageCollection CurrentImageCollection{get;set;}
受保护的int_imageTabCounter=1;
私人词典(组图像),;
public observeCollection OpenViewers{get;private set;}
类ImageViewerTableItem注册到OpenViewerCollectionChanged事件
也可以从中注销,如您所见
public ImageViewerTabItem(RelayCommand<ImageViewerTabItem> closeTabCommand, RelayCommand<ImageViewerTabItem> duplicateTabcommand, RelayCommand<AttachableItem> attachTabCommand,
RelayCommand<ImageViewerTabItem> detachTabCommand, RelayCommand ungroupAllCommand, RelayCommand groupAllCommand, ObservableCollection<BaseViewerTabItem> openViewers, Dictionary<int, List<ImageViewerTabItem>> groupedImages)
{
_closeTabCommand = closeTabCommand;
_duplicateTabcommand = duplicateTabcommand;
_attachTabCommand = attachTabCommand;
_detachTabCommand = detachTabCommand;
_ungroupAllCommand = ungroupAllCommand;
_groupAllCommand = groupAllCommand;
OpenViewers = openViewers;
_groupedImages = groupedImages;
OpenViewers.CollectionChanged += OpenViewersChanged;
}
public void TearDown()
{
OnTabClosed();
OpenViewers.CollectionChanged -= OpenViewersChanged;
ImageContentViewModel.TearDown();
}
public ImageViewerTabItem(RelayCommand closeTabCommand、RelayCommand duplicateTabcommand、RelayCommand attachTabCommand、,
RelayCommand detachTabCommand、RelayCommand ungroupAllCommand、RelayCommand groupAllCommand、ObservableCollection OpenViewer、Dictionary GroupeImage)
{
_closeTabCommand=closeTabCommand;
_duplicateTabcommand=duplicateTabcommand;
_attachTabCommand=attachTabCommand;
_detachTabCommand=detachTabCommand;
_ungroupAllCommand=ungroupAllCommand;
_groupAllCommand=groupAllCommand;
OpenViewers=OpenViewers;
_GroupeImage=GroupeImage;
OpenViewers.CollectionChanged+=OpenViewers已更改;
}
公共无效拆卸()
{
OnTabClosed();
OpenViewers.CollectionChanged-=OpenViewersChanged;
ImageContentViewModel.TearDown();
}
这是我的Xaml代码
<Grid>
<xcad:DockingManager DocumentsSource="{Binding OpenViewers}"
x:Name="MainTabControl"
LayoutItemTemplate="{StaticResource imageSelectionTemplate}"
ActiveContent="{Binding ActiveTabItem, Mode=TwoWay}"
DocumentHeaderTemplate="{StaticResource DocumentHeaderDataTemplate}"
DocumentTitleTemplate="{StaticResource DocumentTitleDataTemplate}" IsHitTestVisible="True" VerticalContentAlignment="Stretch" VerticalAlignment="Stretch">
<xcad:LayoutRoot>
<xcad:LayoutPanel Orientation="Horizontal" >
<xcad:LayoutDocumentPane />
</xcad:LayoutPanel>
</xcad:LayoutRoot>
</xcad:DockingManager>
</Grid>
你能建议我的问题出在哪里吗?或者如何找到内存泄漏?
Avalon dock会有内存泄漏吗