我有一个使用MEF引导程序的prism 4应用程序。我已经从bootstrapper实现了一个闪屏,并希望在模块管理器加载应用程序/模块时为用户提供模块信息(当它们被加载时)。
我想我需要在模块管理器中订阅LoadModuleCompleted事件。我不能这样做,因为当我用MEF引导程序中的容器解析模块管理器时,PRISM框架调用OnImportsSatisfied来加载所有模块。(这太迟了,因为我想听这个)。
如何显示带有进度条的启动窗口,进度条显示模块信息/进度?
非常感谢!
发布于 2012-08-25 08:27:30
如果您控制导入到您的项目中的组合部件,您可以在每个部件上实现IPartImportsSatisfiedNotification,并让它们将自己的进度报告给一些导入的进度监视器类:
public interface IProgressMonitor
{
void ReportComposed(Type type);
}
[Export(typeof(IProgressMonitor))]
public class ProgressMonitor : IProgressMonitor
{
public ProgressMonitor()
{
var loadHeuristic = this.GetPreviousLoadProgress();
if (loadHeuristic == null)
{
// Never been loaded before, so it's unclear how long it will take
// Set indeterminate progress bar.
}
else
{
// Use previous load times to estimate progress.
_loadHeuristic = loadHeuristic;
_progress = 0;
}
}
public void ReportComposed(Type type)
{
if (_loadHeuristic != null)
{
this.IncrementProgress();
}
}
}
[Export]
public class FooExport : IPartImportsSatisfiedNotification
{
[Import]
internal IProgressMonitor ProgressMonitor { get; set; }
public void OnImportsSatisfied()
{
this.ProgressMonitor.ReportComposed(typeof(FooExport));
}
}https://stackoverflow.com/questions/6413001
复制相似问题