Для Windows Phone 8.1 Microsoft представила несколько методов, которые заканчиваются на AndContinue
. Эти методы приостанавливают приложение для выполнения и обработки пользовательского ввода. После этого вызывают Continue...
-метод с объектом, содержащим результат операции.
Примером может служить WebAuthenticationBroker.AuthenticateAndContinue
, который используется для OAuth.
Пример кода:
class Test : IWebAuthenticationContinuable
{
private void StartAuth()
{
WebAuthenticationBroker.AuthenticateAndContinue(new Uri("http://example.org/token?someInformations"),
new Uri("http://example.org/callback"), null, WebAuthenticationOptions.None);
}
private void ContinueWebAuthentication(WebAuthenticationBrokerContinuationEventArgs args)
{
WebAuthenticationResult result = args.WebAuthenticationResult;
//Do something with the result
}
}
В приложениях для магазина Windows то же самое достигается с помощью WebAuthenticationBroker.AuthenticateAsync
-emthod. Этот метод представляет собой простую асинхронную операцию.
Я хотел бы написать AuthenticateAsync
-метод для Windows Phone, используя AuthenticateAndContinue
. Он должен вернуть Task<WebAuthenticationResult>
.
В качестве довольно хакерского подхода я подумал о Task
, который завершается после выполнения ContinueWebAuthentication
. Если я жду эту задачу и устанавливаю результат в какую-то переменную, я могу получить к нему доступ в асинхронном методе и вернуть его.
Но я не смог понять, как это реализовать.