在方法中暂停执行,直到引发 ListView 的 SelectionChanged 事件
Pause execution in method until SelectionChanged event from ListView is raised
我在 C# 中有一个 windows 10 uwp 应用程序。在一种方法中,我检查了一个字符串列表。如果我的列表中只有一项,我们就很好。但是,如果我有多个项目,我想弹出一个 ListView,以便用户可以 select 多个字符串中的一个字符串。当他们 select 一个时,引发 ListView_SelectionChanged 事件,我可以获得 selected 字符串。但是,这显然与调用者不同 method/event。
问题是,我希望调用方法暂停执行并等待用户 selects 来自 ListView 的字符串。之后,他们 select 一个,我需要在调用者中继续执行。我知道这是在过去用一个 while 循环和一个标志完成的,但这是阻塞的。我不一定关心它是否会阻塞,但是有了 async/await 和其他新的框架功能,我确定有更好的方法吗?
谢谢!
如果您需要非阻塞解决方案,那么您需要实施async/await。
当执行遇到 await 关键字时,它将 return 控制权交给调用者。用户从 ListView 控件中选择值后,将在等待运算符上恢复。
有关 Asynchronous Programming with async and await (C#) 的更多信息。
我想我不小心以不同的方式问了同样的问题两次。为此,我深表歉意。我想我仍在四处寻找解决此问题的方法,但没有有效的答案,因此我再次发布了。
就是说,我终于想出了一个适合我的解决方案,我想分享它。我已经在我的其他问题上回答了它,所以这里是 link。
希望对您有所帮助!
我在 C# 中有一个 windows 10 uwp 应用程序。在一种方法中,我检查了一个字符串列表。如果我的列表中只有一项,我们就很好。但是,如果我有多个项目,我想弹出一个 ListView,以便用户可以 select 多个字符串中的一个字符串。当他们 select 一个时,引发 ListView_SelectionChanged 事件,我可以获得 selected 字符串。但是,这显然与调用者不同 method/event。
问题是,我希望调用方法暂停执行并等待用户 selects 来自 ListView 的字符串。之后,他们 select 一个,我需要在调用者中继续执行。我知道这是在过去用一个 while 循环和一个标志完成的,但这是阻塞的。我不一定关心它是否会阻塞,但是有了 async/await 和其他新的框架功能,我确定有更好的方法吗?
谢谢!
如果您需要非阻塞解决方案,那么您需要实施async/await。 当执行遇到 await 关键字时,它将 return 控制权交给调用者。用户从 ListView 控件中选择值后,将在等待运算符上恢复。
有关 Asynchronous Programming with async and await (C#) 的更多信息。
我想我不小心以不同的方式问了同样的问题两次。为此,我深表歉意。我想我仍在四处寻找解决此问题的方法,但没有有效的答案,因此我再次发布了。
就是说,我终于想出了一个适合我的解决方案,我想分享它。我已经在我的其他问题上回答了它,所以这里是 link。
希望对您有所帮助!