我是新来的...System.Threading.Timer不会触发
我有一个问题,如果有人能帮助我。
它是关于定时器(System.Threading.Timer)。
我想打破不可避免的递归:我在datarow中有两列,它们是相互依赖的(price_without_VAT和price_with_VAT)。设置其中的一个肯定会导致StackOverflowException。因此,这里的想法:
bool flag = true;
void Reset(object state) { flag = true; }
现在,包裹方法改变其中一列的值:
{
if(flag)
{
flag = false;
System.Threading.Timer tmr = new System.Threading.Timer(new System.Threading.TimerCallback(Reset), null, 10, System.Threading.Timeout.Infinite);
datarow.other_column = value;
}
}
datarow.other_column.value线将立即触发上面的方法,但会有没有递归,因为标志是错误的。 在10 ms标志应该回到真,并且一切恢复正常。
现在,当我按照DEBUGGER中的代码,一切工作正常,但是当我启动应用程序NORMALLY复位功能根本不会触发,标志永远被卡住为假,一切都假分开。我玩due_time参数,但似乎没有任何帮助。
任何想法?
没有,StackOverflow上是不可避免的。无论用户选择什么,用户都可以输入含增值税的价格或不含增值税的价格我的工作是设置另一个,当然,打破递归。 – 2010-03-15 19:09:52
包装用户在属性中设置的列,当设置该属性时,自动设置该属性中的另一个属性。听起来不像这需要定时器。 – 2010-03-15 19:29:47
@mijatovic - 我怀疑这是不可避免的 - 但是你打算用同步的计时器来防止它。 – Lee 2010-03-15 19:30:10