【发布时间】:2009-11-06 00:14:23
【问题描述】:
第一次在区域内显示视图大约需要 5-10 秒慢,并且在我的 Prism Composite WPF 应用程序中,UI 在此期间冻结。在随后的时间里,视图的加载速度相对较快,没有任何 UI 冻结。 View 由 Devexpress WPF Grid 控件组成,数据从 SQL 数据库中获取。我不认为这是网格控件/绑定的问题,即使我删除了与网格控件的绑定,View 也需要几乎相同的时间将自身呈现到区域中。
这是我用来将 View 加载到 Shell 内定义的区域的代码:
public Action<MenuModel> LoadViewRequest { get; set; }
public SyncController(IUnityContainer container, IEventAggregator eventAggregator, IRegionManager regionManager)
{
this.container = container;
this.eventAggregator = eventAggregator;
this.regionManager = regionManager;
this.LoadViewRequest = (menuItem) => { LoadRequestedView(menuItem); };
this.eventAggregator.GetEvent<ViewRequestedEvent>().Subscribe(LoadViewRequest, ThreadOption.UIThread, true, i => i.Module == "Sync");
}
private void LoadRequestedView(MenuModel menuItem)
{
try
{
IViewModel viewModel = this.container.Resolve<SynchronizeViewModel>();
this.regionManager.Regions["ViewRegion"].Add(viewModel.View);
this.regionManager.Regions["ViewRegion"].Activate(viewModel.View);
viewModel.DisplayName = menuItem.Description;
this.eventAggregator.GetEvent<ViewNotificationEvent>().Publish(menuItem.Description);
}
catch (ResolutionFailedException) { }
}
这种行为背后的原因可能是什么?为什么 View 在第二次加载时几乎立即加载?这是否意味着即使在从 Region 中删除 View 之后,我的应用程序仍然持有对 View 的引用?
【问题讨论】:
-
您是否尝试过在您的应用程序中使用分析器?
标签: c# wpf performance prism