<p>Winform on CF is a bit heavy, initialising a lot of windows handles takes serious time and memory. Another issue is the lack of inbuilt double buffering and lack of control you have over the UI rendering means that during processor intensive operations the UI might leave the user staring at a half rendered screen. Nice!</p>

<p>To alleviate this issue I would seek a lightweight control framework, is there one kicking about already or would one have to homebrew?</p>

<p>By lightweight I mean a control library that enables one to fully control painting of controls and doesn't use many expensive windows handles. </p>

<p>NOTE: Please don't suggest that I am running too much on the UI thread. That is <strong>not</strong> the case.</p>

Actually, you can override the paint event.
And the idea is that you offload long-running operations to a separate thread.  That's no different from any other event-driven framework, really.
Anything
that relies on a handling a Paint event is going to be susceptible to that.
Also, there's no system that lets you determine when the paint event is raised. That kind of event is generally raised by the window manager layer, which is outside of the application (or even the framework). You can handle the event yourself and just do no work some of the time, but I wouldn't recommend it.