gpt4 book ai didi

c# - 如何让动画等待?

转载 作者:行者123 更新时间:2023-11-30 21:06:40 31 4
gpt4 key购买 nike

很抱歉无法给出更准确的标题,但这是我想做的。我有一个方法 foo 可以启动一些 UI 动画。当这些动画完成后,我想发出方法完成的信号。但是我不想通过事件发出完成信号,而是让方法 awaitable。如何才能做到这一点?

void foo()
{
// start some animations
storyboard.Begin();
storyboard.Completed += (s, e) => { // signal that foo has completed }
}

调用代码应该可以这样写:

await foo();

我实际的 foo 比上面的插图更复杂,因为我有一系列的动画,一个接一个地发生,并且 foo 应该在所有的时候完成动画完成。

最佳答案

通常,基于事件完成的事情会使用 TaskCompletionSource 进行“包装”。不幸的是,the example on MSDN是(恕我直言)过于复杂而不仅仅是单个实例+事件。你会有这样的东西:

public Task Foo()
{
var tcs = new TaskCompletionSource<bool>();
storyboard.Begin();
storyboard.Completed += (s, e) => tcs.SetResult(true);
return tcs.Task;
}

在这种情况下,实际上并不需要 TResult,但 TaskCompletionSource 似乎没有非通用版本,我不确定等效模式是什么

关于c# - 如何让动画等待?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10990277/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com