Требуется ли Task.Run () async / await?

1

При создании новой задачи с использованием функции Task.Run() требуется отметить метод как async и использовать await для возобновления потока программы?

Или можно просто вызвать Task.Run() и забыть о новом потоке? Т.е., Task.Run() просто возвращается, и новый поток запускается независимо.

  • 2
    Какие исследования вы провели? Этот хороший учебник может быть полезен для изучения async и await если нет.
  • 0
    Спасибо, мне действительно нужно изучить механизм async / await. Но сейчас мне просто нужна некоторая обработка, связанная с процессором, для запуска в отдельном потоке. Task.Run() кажется, путь.
Теги:

1 ответ

4
Лучший ответ

Или можно просто вызвать Task.Run() и забыть о новом потоке?

Да, это возможно. Нет требования обрабатывать результирующую Task или Task<T> в С#. Это означает, что вам не нужно использовать async или await.

При этом задачи "стрелять и забывать" обычно являются признаком плохого дизайна. Как минимум, обычно рекомендуется обернуть Task в то, что будет await ее обработки и регистрации исключений.

  • 0
    Согласовано. Вместо async - await , можно использовать метод ContinueWith для обработки результата задачи после ее завершения (или сбоя).
  • 0
    Этот поток выполняет некоторую связанную с ЦП обработку и использует обратный вызов для уведомления об обновлениях состояния. Поэтому я забываю об этом, пока обработка не будет завершена.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню