Please do not reply to this email- if you want to comment on the bug, go to the URL shown below and enter your comments there.
Changed by [EMAIL PROTECTED] http://bugzilla.ximian.com/show_bug.cgi?id=79484 --- shadow/79484 2006-09-24 18:13:26.000000000 -0400 +++ shadow/79484.tmp.17557 2006-09-26 04:00:23.000000000 -0400 @@ -30,6 +30,35 @@ How often does this happen? Very often - on one machine it happens 99% of the time, on another it happens 50% of the time. I tried running our app with mono -v option to get more information, but it prints mostly useless information about "emitting" code. + +------- Additional Comments From [EMAIL PROTECTED] 2006-09-26 04:00 ------- +We looked at the source code for System.Timers.Timer class and here is +the problem. If Timer.AutoReset = false, the loop exits and sets wait += null. If the user has called Timer.Start() again, a new thread can +get into the while condition after the previous thread has set the +wait to null just after this new thread created new "wait" object. The +fix can be simple. + +-Pawan + +void StartTimer () + { + wait = new ManualResetEvent (false); + + WaitCallback wc = new WaitCallback (Callback); + while (enabled && wait.WaitOne ((int) +interval, false) == false) { + if (autoReset == false) + enabled = false; + + ThreadPool.QueueUserWorkItem (wc, this); + } + + wc = null; + ((IDisposable) wait).Dispose (); + ==> wait = null; + } + _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
