Тип возвращаемого значения синхронного метода с асинхронной пометкой ⇐ C#
Тип возвращаемого значения синхронного метода с асинхронной пометкой
Я пытаюсь что-то понять на C#. Я узнал, что метод C# с асинхронной пометкой должен возвращать Task. Но я также узнал, что метод, помеченный как асинхронный, не обязательно имеет асинхронное поведение. Иногда я помечаю метод как асинхронный, чтобы иметь возможность дождаться метода, т. е. синхронизировать выполнение. Вот пример:
асинхронная задача X() { // Некоторая асинхронная работа, возвращающая int. результат int = ждут SomeAsyncOperation(); вернуть результат; } Здесь, очевидно, с точки зрения вызывающего абонента, я могу посмотреть на X и сказать: ну, мне не нужно ждать этого метода, поскольку он синхронный. Я знаю, что он будет ждать асинхронного выполнения SomeAsyncOperation и только после его завершения выдаст мне результат. По сути, я рассматриваю X как синхронный метод.
Но X все равно должен вернуть задачу, которая «представляет собой асинхронную операцию, которая может возвращать значение». Как мне выйти из этой цепочки задач при всех вызовах метода X или теперь мне придется перетаскивать задачу по всем вызовам метода X?
Другими словами, могу ли я это написать или это заблокирует ветку?
int X() { вернуть SomeAsyncOperation().Результат; }
Я пытаюсь что-то понять на C#. Я узнал, что метод C# с асинхронной пометкой должен возвращать Task. Но я также узнал, что метод, помеченный как асинхронный, не обязательно имеет асинхронное поведение. Иногда я помечаю метод как асинхронный, чтобы иметь возможность дождаться метода, т. е. синхронизировать выполнение. Вот пример:
асинхронная задача X() { // Некоторая асинхронная работа, возвращающая int. результат int = ждут SomeAsyncOperation(); вернуть результат; } Здесь, очевидно, с точки зрения вызывающего абонента, я могу посмотреть на X и сказать: ну, мне не нужно ждать этого метода, поскольку он синхронный. Я знаю, что он будет ждать асинхронного выполнения SomeAsyncOperation и только после его завершения выдаст мне результат. По сути, я рассматриваю X как синхронный метод.
Но X все равно должен вернуть задачу, которая «представляет собой асинхронную операцию, которая может возвращать значение». Как мне выйти из этой цепочки задач при всех вызовах метода X или теперь мне придется перетаскивать задачу по всем вызовам метода X?
Другими словами, могу ли я это написать или это заблокирует ветку?
int X() { вернуть SomeAsyncOperation().Результат; }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение