我是新來的...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