在C#Metro样式应用程序中
ASYNC事件处理:干净的解决方案
>
异步编程对于响应式C#/XAML Metro样式应用程序至关重要,可以防止在冗长操作过程中UI冻结。 但是,在需要中间过程中需要用户互动的情况下出现情况。本文详细介绍了如何在异步方法中有效等待事件,暂停执行直到事件触发。。 挑战:等待异步操作期间的用户输入
GetResults
想象一个方案:一个按钮启动异步GetResults
方法。 此方法可能需要用户输入(例如,在继续执行之前单击“继续”按钮)。 关键问题:我们如何暂停
> 效率低下的轮询:避免
的一种方法
GetResults
>一种简单的方法(但有缺陷)的方法涉及“继续”按钮的事件处理程序更新的标志,并在Task.Delay
>内反复检查。这种不断的民意调查会浪费资源,并且效率低下。
优雅的基于事件的解决方案
C#提供了卓越的事件驱动的解决方案:
1。 利用SemaphoreSlim
SemaphoreSlim
对象实例化为信号。GetResults
>
SemaphoreSlim.WaitAsync
TaskCompletionSource
TaskCompletionSource<bool>
GetResults
tcs.Task
这些事件驱动的方法提供了一种将用户互动整合到异步操作中的干净有效的方法,从而确保在复杂方案中流畅的用户体验。以上是如何在异步C#Metro App方法中等待事件?的详细内容。更多信息请关注PHP中文网其他相关文章!