2016-09-19 12 views
0

アプリケーションの起動時にDBからデータをロードする必要があります。起動時に長時間動作するWPFアプリケーション

私が望むのは、メインウィンドウを最初に表示し、進行状況バーと、操作が実行されている間に "データがロード中"のようなステータステキストを表示することです。

どうすればよいですか?

私はApplication_Startupから自分自身を私のDB接続(DbConn)をinitilizingとMainWindowだ:

protected void Application_Startup(object sender, StartupEventArgs e) 
     { 
      DbConn= new DBConnection(); 
      System.Threading.Thread.CurrentThread.CurrentUICulture = DbConn.GetLocalCulture(); 
      System.Threading.Thread.CurrentThread.CurrentCulture = System.Threading.Thread.CurrentThread.CurrentUICulture; 
      main = new MainWindow(); 
      main.Show(); 
     } 

私はMainWindowにバックグラウンドワーカーを持っており、そこに私の窓モデルを初期化:

public MainWindow() 
     { 
      DataContext = new Models.MyModel(App.DbConn); 
      InitializeComponent(); 
      BgWLoad = new BackgroundWorker(); 
      BgWLoad.WorkerSupportsCancellation = false; 
      BgWLoad.DoWork += BgwLoad_DoWork; 
      BgWLoad.ProgressChanged += BgwLoad_ProgressChanged; 
      BgWLoad.RunWorkerCompleted += BgwLoad_RunWorkerCompleted; 
} 

I私の労働者(BgWLoad.RunWorkerAsync)を実行する必要がありますか?

DBからの船荷証券データの論理は、現在mymodelという側に配置され、進行状況は、コールバックとして報告されています

private void BgwLoadQK_DoWork(object sender, DoWorkEventArgs e) 
     { 
      StatusText.Text = Properties.Resources.msgLoadingKeySets; 
      Model.Init((double progress) => 
      { 
       ((BackgroundWorker)sender).ReportProgress(Convert.ToInt32(progress)); 
      }); 
     } 

は、そうするには、[OK]このですか?

または、これはベストプラクティスを使用してどのように構成する必要がありますか?

答えて

1

プロセスを開始する前にMainWindowを表示させるために、MainWindow.ContentRenderedイベントを使用して、ビューがレイアウトされ表示されたときに起動されるプロセスを開始します。

関連する問題