Я пытаюсь найти лучшую практику для одного из моего проекта. Это типичное приложение WPF с пользовательским интерфейсом, которое отображает список элементов, и существует служба данных, которая возвращает результат. У нас есть 2 варианта перед нами: < /p>
Использование Async < /code>, wait < /code> Ключевые слова.
Это требует маркировки всех методов Async < /code> из кнопки «Клипко» все способ обслуживания (класс на стороне клиента, который заставляет http призывать на сервер) и любой метод. Этот подход работает нормально, кроме того, что проблема распространения Async везде.
Использовать awaiter и обратный вызов .
В этом подходе клиент UI называет уровни услуг и передает обратный вызов к слою услуги, Service Layer Servel Servalp Servert Servalp Servalp Servert Servert Servert Servalp Servert Servalp Servert -Servicp. Getawaiter (). GetResult () , когда http -вызов завершен, он вызывает обратный вызов, переданный клиентом пользовательского интерфейса. В этом случае ни один метод не должен пометить асинхронность , но не совсем уверен в использовании getawaiter () .
Я пытаюсь найти лучшую практику для одного из моего проекта. Это типичное приложение WPF с пользовательским интерфейсом, которое отображает список элементов, и существует служба данных, которая возвращает результат. У нас есть 2 варианта перед нами: < /p> [list] [*] Использование Async < /code>, wait < /code> Ключевые слова.
Это требует маркировки всех методов Async < /code> из кнопки «Клипко» все способ обслуживания (класс на стороне клиента, который заставляет http призывать на сервер) и любой метод. Этот подход работает нормально, кроме того, что проблема распространения Async везде.
[*] Использовать awaiter и обратный вызов .
В этом подходе клиент UI называет уровни услуг и передает обратный вызов к слою услуги, Service Layer Servel Servalp Servert Servalp Servalp Servert Servert Servert Servalp Servert Servalp Servert -Servicp. Getawaiter (). GetResult () , когда http -вызов завершен, он вызывает обратный вызов, переданный клиентом пользовательского интерфейса. В этом случае ни один метод не должен пометить асинхронность , но не совсем уверен в использовании getawaiter () . [code]Task.Run(async () => //await http call, invoke callback).GetAwaiter().GetResult(); [/code]
[/list] Я просто пытаюсь выяснить, какой подход является лучшим подходом и есть ли некоторые проблемы с любым подходом, о которых я должен знать.