Slavka_online
@Slavka_online
Интересная личность

Не могу понять синтаксис Async/Await, как переписать код?

В общем использую просто таск написал такой код:
private void makeExperiment()
        {       
                Task task = new Task(
                                    () => _experiment.Start(data)
                                    );

                var awtr = task.GetAwaiter();
                awtr.OnCompleted(
                                () =>
                                {
                                    //что то делаем после
                                });
                task.Start();
            }

Как его переписать в стиле C# 5 , как я понимаю должно быть так
private void makeExperimentAsync()
        {       
          await _experiment.StartAsync(data);
           //что то делаем после
            }

Но что должно быть в методе StartAsync ? просто все обернуть в Task , но если я ничего не хочу возвращать из потока написать return Task.Run( //...) не получается, нужно писать await Task.Run, так выходит что await должен быть и внутри асинхронного метода и снаружи?
  • Вопрос задан
  • 198 просмотров
Пригласить эксперта
Ответы на вопрос 1
@SZolotov
Asp.net core, MAUI,WPF,Qt, Avalonia
Как-то так.
private async Task makeExperimentAsync()
        {       
          await _experiment.StartAsync(data);
           //что то делаем после
            }

private async Task makeExperiment()
        {       
                await TaskFactory.StartNew( () => _experiment.Start(data) )
.ContinueWith( (e) => 
            {
                 //что то делаем после
            });
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы