我有以下代碼:使用等候ContinueWith內()塊
var result = MessageBoxHelper.MsgBox
.ShowAsync("Press Yes to proceed", MessageBoxButton.YesNo)
.ContinueWith((answer) =>
{
if (answer.Result == MessageBoxResult.Yes)
{
Task<bool> asyncTask = ExecuteAsyncFunc();
//asyncTask.Unwrap(); ??
asyncTask.ContinueWith((a) =>
{
// More
}, TaskContinuationOptions.OnlyOnRanToCompletion);
}
}, TaskContinuationOptions.OnlyOnRanToCompletion);
}
其他地方調用是這樣的:
public async Task<bool> ExecuteAsyncFunc()
{
await CallAnotherAsyncFunction();
}
我相信,我需要調用展開(),在那裏我有試圖,因爲我打電話在ContinueWith()
區塊內等待。不過,我得到以下錯誤,當我取消它:
錯誤CS1929「任務」不包含「展開」 的定義和最佳推廣方法重載 「TaskExtensions.Unwrap(任務)」需要接收器類型 '任務'
我是否需要在此上下文中使用Unwrap,如果有,我做錯了什麼?
你爲什麼要用'await'混合'ContinueWith'? –
有關使用ContinueWith而不是等待的各種問題的答案是我來自同步代碼(遊戲)。 ContinueWith似乎是從同步調用異步函數的簡單方法。 –