2017-02-06 10 views
0

私はMVVM WPFアプリケーションを開発しています。WPF、タスクが完了したことを知るhowto

  1. 最初のロードファイルのcsvと私は非同期待つタスクにする必要がデータベースに行を保存して背景ドントブロックで
  2. UIスレッドを解析し、database.Toの値を保存します。

私の問題は、ポップアップ通知や値が既にデータベースに保存されていることをユーザーに通知する方法がわかりません。事前に私のService.cs

public string SaveDatasInDatabase(List<Object> rows) 
{ 
    Task.Run(async() => 
    { 
      await SaveEntity(rows); 
      return "Done"; 
    }); 
} 

おかげで私のViewModel

private void SaveDatasInDatabase() 
{ 
      ShowLoadingPanel = true; 
      _service.SaveValuesInDatabase(rows); 
} 


private async void startActions() 
{ 
    await LoadandParseCsv(); 
    await SaveDatasInDatabase(); 
} 

Jolynce

答えて

1

あなたはstartActions()方法の残りの部分が実行されると、タスクが完了したことを知っている:

private async void startActions() 
{ 
    await LoadandParseCsv(); 
    await SaveDatasInDatabase(); 

    MessageBox.Show("done"); 
} 

は...実際にSaveDatasInDatabase()方法でSaveEntity方法を待っていることを提供する:

public async Task<string> SaveDatasInDatabase(List<Object> rows) 
{ 
    await SaveEntity(rows); 
    return "Done"; 
} 

Task.Runを返信する場合は、Task、あなたはそれが終わった時を知らない。

SaveDatasInDatabaseメソッドの戻り値の型は、TaskまたはTask<T>である必要があります。同じことがSaveEntityメソッドにも当てはまります。

+0

ありがとうございますmm8。私はあなたの解決策を試みます。 – jolynice

+0

:)多くのありがとうmm8、うまく動作しています.. – jolynice

関連する問題