我正在開發Windows 8運行時組件,因此公共接口不能包含Task<T>
,因爲它不是Windows運行時類型。當你無法等待時,你如何等待任務
這意味着我不能在方法庫中將方法標記爲async
,也不能將await
方法標記爲private async
。這導致了一些關於如何處理我的應用程序邏輯的混淆。
這就是我如何做我想要同步。
Result r = TryGetAuthResultFromFile();
if(r != null)
{
return r;
}
r = GetAuthResultFromWebAuthenticationBroker();
return r;
的問題是,TryGetResultFrom文件是async Task<Result>
方法,而這回的R方法返回IAsyncOperation<Result>
我已經試過這(這是不完整的代碼,但該理論可以看出,處理導致繼續並返回它們,我不得不對一些類型的IAsyncOperation類型做結果)。
TryGetAuthResultFromFile().ContinueWith(x=>
{
if(x.Result != null)
{
return x.result;
}
GetAuthResultFromWebAuthenticationBroker().ContinueWith(y=>
{
return y.Result;
});
});
這樣做的問題是,WebAuthenticationBroker
似乎工作不一樣,如果它沒有被從UI線程調用。它會引發一個有幫助的NotImplementedException
而沒有有用的錯誤消息。
如何才能撥打TryGetAuthResultFromFile
然後等待結果,然後致電GetAuthResultFromWebAuthenticationBroker
?
謝謝,我已經在其他地方使用了這種技術,它完全符合我的需求。我不知道爲什麼我沒有發現明顯的解決方案,我認爲是在家。 – BenCr