[Mono-bugs] [Bug 430483] Timer.OnTimer() function got called with non-gui thread

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Mon Sep 29 09:50:50 EDT 2008


User awunwpa7 at yahoo.com.ph added comment

--- Comment #2 from Steve Odbc <awunwpa7 at yahoo.com.ph>  2008-09-29 07:50:50 MDT ---
Created an attachment (id=242258)
 --> (https://bugzilla.novell.com/attachment.cgi?id=242258)
code that triggers invalid op exception

I mean the System.Windows.Forms.Timer and the method is just called "Tick"
(sorry for that, it used to be called OnTimer in VB years ago). Yes, marshal it
to the gui thread, since I'm convinced MS does the same (but I didn't check
their code).

And also yes, I wanted to state that MONO does not always check the thread. But
that is not a serious bug, since you can workaround with discipline (as long as
the Timer doesn't contradict). In MS you also need to pay attention to this,
since you don't catch those InvalidOperationException, but you avoid them from
the start.

The clue is, you need Application.Run() for those exceptions to work.
Application.Run() (with or without parameter - it does not matter) registers
the calling thread as the main thread. And from that moment on the
InvalidOperationException is thrown nearly always. I don't think you can just
add this functionality to each field, property and method, you rather need a
more general approach that kind of automatically does it for you.

Check my attachment to trigger exceptions.

Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.

More information about the mono-bugs mailing list