我在页面上有几个控件。它恰好是一个Silverlight页面,但我不认为这个问题很重要。
当控件的值发生变化时,会引发更改事件。在这种情况下,我进行计算并更改其他控件之一的值。这反过来导致另一个控件引发一个改变的事件,这反过来导致计算(冗余地)再次完成。
即。更改任何控件的值将导致执行计算并更改另一个控件的值 - 始终在此用例中。
我最初尝试解决此问题涉及使用布尔标志并将其重置为第二个事件中的默认值。然而,这不起作用,感觉很好。
你将如何防止第二次计算完成?
答案 0 :(得分:1)
布尔标志也是,我想......不知道它为什么不适合你。它是这样的:
private bool InEvent = false;
public void MyEventHandler(object sender, EventArgs e)
{
if ( InEvent )
return;
InEvent = true;
// Do stuff here
InEvent = false;
}
如果您害怕多线程,可能会在某处使用锁定语句,但我不认为是这种情况。此外,您可能想要尝试...最后确保InEvent最终始终设置为false。