對不起,不能提供更精確的標題,但這是我想要做的。我有一個方法foo
,它將啓動一些UI動畫。當這些動畫完成後,我想表示完成該方法。但是不是通過事件發信號完成,我想製作方法awaitable
。如何才能做到這一點?如何讓動畫等候?
void foo()
{
// start some animations
storyboard.Begin();
storyboard.Completed += (s, e) => { // signal that foo has completed }
}
調用代碼應能寫:
await foo();
我的實際foo
比上圖中更復雜,因爲我有一系列的動畫,這接二連三發生的,並且foo
是當所有動畫完成時應該完成。
'TaskCompletionSource'確實沒有非通用版本,如果你想返回'Task',使用'TaskCompletionSource'(可能帶註釋)可能是最好的解決方案。但這不是唯一的選擇:另一種可能性是返回自定義的等待類型。但在這種情況下這樣做會過度。 –
svick