0

我有一个正在构建的 WPF 应用程序。程序在初始化时会显示一个启动屏幕。大多数启动顺序需要在显示主窗口后在后台线程中完成。我的问题是主窗口在我想要的时候没有显示。

这是我的主窗口的 Window_Loaded 事件处理程序:

private void Window_Loaded( object sender, RoutedEventArgs e ) {
    if ( !DoInitialize() ) {
        shuttingDown = true;
        Application.Shutdown();
    }

    e.Handled = true;
}

private bool DoInitialize() {
    if ( !ReadConfiguration( Application.ConfigurationFilePath ) ) {
        return false;
    }

    Thread th = new Thread( new ThreadStart( FinishInitializing ) );
    th.SetApartmentState(ApartmentState.STA); 
    th.Start();

    ClockTimer = new DispatcherTimer( TimeSpan.FromSeconds( 1 ), DispatcherPriority.Background, UpdateClock, Dispatcher );
    ClockTimer.Start();

    return true;
}

如您所见,除了读取配置文件之外,它除了启动后台Thread完成初始化并启动DispatcherTimer. 此计时器用于更新显示屏上的时钟。

究竟是什么触发了主窗口的显示?

托尼

4

1 回答 1

1

如果您希望在渲染(显示)窗口后执行代码,您可以附加到主窗口上的 Window.ContentRendered 事件。

要回答您的问题,顺序是

  • 显示的闪屏
  • MainWindow 构造函数 (InitializeComponent())
  • Window.Loaded 调用
  • 显示的窗口
  • Window.ContentRendered 调用
  • 闪屏已隐藏
于 2012-06-18T23:03:37.103 回答