2017-02-06 19 views
0

MVVM WPF 앱을 개발 중이며 할 일이 있습니다.WPF, 작업 완료를 알리는 하우투

  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