C#双向绑定循环
本文关键字:循环 绑定 | 更新日期: 2023-09-27 18:29:56
来自Java背景,我遇到了双向绑定机制的同步问题。我有一个属性,它绑定到组合框上的选择项。
<ComboBox SelectedItem="{Binding car.hp, Mode=TwoWay}" .../>
在OnSelectionChanged事件上,我触发一个长时间运行的命令。
private void async() {
...
await longtermjob();
...
}
到目前为止,这一切都有效。但是,如果我在命令尚未完成的情况下快速更改组合框的选择,我就会陷入一个无限循环。"选定项目"在这两个值之间不断变化。有什么想法吗?如何确保绑定是线程安全的?
如果在没有停止条件的情况下更改事件中绑定属性的值,则数据更改将继续导致OnSelectionChanged
激发,具体取决于更改数据的方式。如果您添加了一个布尔标志来检查异步调用是否已经在进行,那么您就不会遇到这个问题。此外,我还建议您考虑暂时禁用控制。
编辑/这是解决方案:
private bool requestInProcess { get; set; }
private void async() {
if (!requestInProcess) {
requestInProcess = true;
await longtermjob();
requestInProcess = false;
}
}