【问题标题】:Pause execution in method until SelectionChanged event from ListView is raised暂停方法中的执行,直到引发来自 ListView 的 SelectionChanged 事件
【发布时间】:2017-03-30 00:20:07
【问题描述】:

我有一个 C# 中的 Windows 10 uwp 应用程序。在一种方法中,我检查了一个字符串列表。如果我的列表中只有一项,我们很好。但是,如果我有多个项目,我想弹出一个 ListView 以便用户可以从多个中选择一个字符串。当他们选择一个时,会引发 ListView_SelectionChanged 事件,我可以获得选定的字符串。但是,这显然与调用者的方法/事件不同。

问题是,我希望调用方法暂停执行并等到用户从 ListView 中选择一个字符串。之后,他们选择了一个,我需要在调用者中继续执行。我知道这在过去是通过一个 while 循环和一个标志完成的,但这是阻塞的。我不一定关心它是否会阻塞,但有了 async/await 和其他新的框架功能,我确定有更好的方法吗?

谢谢!

【问题讨论】:

  • 您根本无法在具有 void 签名的事件处理程序中暂停执行。由于无法将其更改为任务,因此它不支持异步流。

标签: c# .net windows-10-universal


【解决方案1】:

如果您需要非阻塞解决方案,那么您需要实现 async/await。 当执行遇到 await 关键字时,它将控制权返回给调用者。用户从 ListView 控件中选择值后,在 await 运算符上恢复。

更多关于Asynchronous Programming with async and await (C#)的信息。

【讨论】:

    【解决方案2】:

    我想我不小心以不同的方式问了同样的问题两次。为此我深表歉意。我想我仍在四处寻找解决此问题的方法,但没有任何有效的答案,因此我再次发布。

    也就是说,我终于能够想出一个适合我的解决方案,我想分享它。我已经回答了我的另一个问题,所以这里是它的链接。

    My answer on the other post

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多