Есть 3 метода:
1. Чтение из файла:
public Task LoadFromFileAsync()
{
return Task.Run(() =>
{
//загрузка данных из файла
});
}
2. Расчеты. одновременно запускает 3 метода разного рода расчетов:
public async Task StartCalculationAsync()
{
Task.Factory.StartNew(() => Calculation1());
Task.Factory.StartNew(() => Calculation2());
Task.Factory.StartNew(() => Calculation3());
}
3. Сохранение результатов:
public Task SaveToFileAsync()
{
return Task.Run(() =>
{
SaveToFile();
});
}
В обработчике событий вызываются следующим образом:
private async void button_Click(object sender, RoutedEventArgs e)
{
await LoadFromFileAsync(); //выполняется 10-15 секунд
await StartCalculationAsync(); //может выполняться часами
await SaveToFileAsync(); //выполняется 1-2 секунды
}
LoadFromFileAsync выполняется, StartCalculationAsync ждет завершения работы LoadFromFileAsync и после этого начинает выполняться. Но одновременно с ним начинает выполняться SaveToFileAsync. Почему так происходит? Ведь SaveToFileAsync должен дождаться выполнения StartCalculationAsync.
И почему модер удалил тег "Программирование". Это что, не программирование?