2013-11-15 15 views
0

我做了一個winform應用程序,其中我使用了一個system.timers.timer控件,時間間隔爲 10分鐘,我聲明瞭一個整數變量,當一個特定事件被解僱 問題是,整數值被重置爲0,但是當我設置定時器控制到1分鐘它顯示正確的結果 ,有沒有人知道爲什麼這種奇怪的行爲?存儲特定時間間隔的變量值,奇怪的行爲

我做了一些調查,發現其中一個原因可能是 垃圾回收器可能對此負責,但是int值存儲在堆上,對不對?在應用程序域關閉之前無法進行GC'd 如果您知道任何其他解決方案,請諮詢,真的需要這個嗎?我認爲問題在於變量被GC重置,但我也使用GC.KeepAlive(TimerName);任何人都可以嗎?

+2

沒有代碼,除了「幾乎可以肯定的代碼錯誤」之外,這是無法回答的。另外,爲什麼這個標籤的asp.net-4.0? –

+0

代碼講述了最好的故事.. –

+0

人們比閱讀代碼更舒適閱讀代碼.. –

回答

0

System.Timers.Timer是一個多線程環境的計時器。
MSDN

Elapsed事件引發對ThreadPool線程。

嘗試使用System.Windows.Forms.Timer代替。
但是,如果您對多線程行爲感興趣,請將計時器的SynchronizingObject屬性設置爲引用某個對象,該對象在與整數變量相同的線程中聲明。