0

来自 Java 背景,我遇到了双向绑定机制的同步问题。我有一个绑定到组合框上的选择项的属性。

<ComboBox SelectedItem="{Binding car.hp, Mode=TwoWay}" .../>

在 OnSelectionChanged 事件中,我触发了长时间运行的命令。

private void async() { 
    ...
    await longtermjob();
    ...
}

到目前为止,这一切都有效。但是,如果我在命令尚未完成时快速更改组合框选择,我会陷入无限循环。所选项目在两个值之间不断变化。任何想法如何发生?我如何确保绑定是线程安全的?

4

1 回答 1

3

如果您在没有停止条件的情况下更改事件中绑定属性的值,则数据更改将继续导致OnSelectionChanged触发,具体取决于您更改数据的方式。如果你添加一个布尔标志来检查异步调用是否已经在进行中,你应该不会遇到这个问题。此外,我还建议您考虑暂时禁用该控件。

编辑/这是解决方案:

private bool requestInProcess { get; set; }

private void async() { 
    if (!requestInProcess) { 
        requestInProcess = true;
        await longtermjob();
        requestInProcess = false;
    }
}
于 2013-09-03T11:15:21.937 回答