首页 > 后端开发 > C++ > 如何在异步C#Metro App方法中等待事件?

如何在异步C#Metro App方法中等待事件?

Susan Sarandon
发布: 2025-01-29 16:56:10
原创
896 人浏览过

How Can I Await an Event in an Async C# Metro App Method?

在C#Metro样式应用程序中

ASYNC事件处理:干净的解决方案

>

异步编程对于响应式C#/XAML Metro样式应用程序至关重要,可以防止在冗长操作过程中UI冻结。 但是,在需要中间过程中需要用户互动的情况下出现情况。本文详细介绍了如何在异步方法中有效等待事件,暂停执行直到事件触发。

挑战:等待异步操作期间的用户输入

GetResults想象一个方案:一个按钮启动异步GetResults方法。 此方法可能需要用户输入(例如,在继续执行之前单击“继续”按钮)。 关键问题:我们如何暂停

,直到用户交互?

> 效率低下的轮询:避免

的一种方法 GetResults>一种简单的方法(但有缺陷)的方法涉及“继续”按钮的事件处理程序更新的标志,并在Task.Delay>内反复检查。这种不断的民意调查会浪费资源,并且效率低下。

优雅的基于事件的解决方案

C#提供了卓越的事件驱动的解决方案:

1。 利用SemaphoreSlim

  • >将aSemaphoreSlim对象实例化为信号。
  • > 按下“继续”按钮时释放信号量。
  • >
  • in ,等待
  • 。这会阻止执行直到释放信号量为止。GetResults> SemaphoreSlim.WaitAsync
2。利用

TaskCompletionSource

创建一个
    来表示“继续”按钮点击迹象。>
  • 在按钮点击时完成任务。TaskCompletionSource<bool>
  • 内部
  • ,等待
  • 。执行停止直到任务完成为止。
  • > GetResults tcs.Task这些事件驱动的方法提供了一种将用户互动整合到异步操作中的干净有效的方法,从而确保在复杂方案中流畅的用户体验。

以上是如何在异步C#Metro App方法中等待事件?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板