[Mono-devel-list] mono's Windows Forms & MS .Net

Chris Day ChrisD at monkey.biz
Wed May 21 19:18:23 EDT 2003

Windows forms AFAIK is sort of based on COM.  Basically the Main
function of a winforms app has a [STAThread] attribute which is
Single-Threaded Apartment.  Basically what this means is that COM (and
Windows) talks to the process via a message pump, with the messages
usually then processed and dispatched and handled in the WndProc method
of a winform.  The thread which handles the windows messages is also
called the UI Thread.
However winforms still talks to Windows directly (well if you consider
P/Invoke direct ;)
Basically for all messages (ie. mouse moved, repaint yourself, etc)
windows communicates with the winform via the message pump.  Also _some_
gui updates require messages go through the message pump (ie. you need
to call Invoke on the control you're updating with a delegate to the
method to do the updating, which then calls the delegate on the UI
Thread), but it does not mean that a winform app is or required to be
To summarise
    - winforms message pump runs on a single thread, aka UI Thread
    - winforms talks "directly" to kernel (aka Win32 API)
In terms of mono's winforms working on WinXX, I would suggest that if
there is in place a process to handle windows messages then they should
work fine.  I have no idea, but I guess this is what GTK does for you on

-----Original Message-----
From: Urs Muff [mailto:umuff at quark.com] 
Sent: Thursday, 22 May 2003 12:32 AM
To: mono-devel-list at lists.ximian.com
Subject: [Mono-devel-list] mono's Windows Forms & MS .Net

The MS Windows forms have a major drawback; they are based on COM and
are single threaded.  That means they are not using the underlying
kernel directly, but using COM to talk to it.

As far as I know mono's Windows forms are directly written on top of the
kernel.  Is that correct?

Do mono's Windows forms have a threading restriction?

What is the status of Windows forms on Win32 [WinNT/WinXP/Win2k3

Would it be possible to use [did anyone try to use] mono's Windows form
in the MS .Net CLR?  What could be possible problems?  Does the forms
implementation rely on anything special in the mono runtime?

Thanks a lot for your answer.

- Urs C. Muff
Software Architect      - Research Lab
Quark Inc.

UMuff at Quark.Com         - X6360

More information about the Mono-devel-list mailing list