> Very special case.
It's not so special if you want to execute an image processing operation on a multi core machine and wait for the result in the main thread, something like (pseudo code):
StartThreads(GetNumberOfProcessors); WaitForThreads;
> Freezing GUI is not acceptable.
[...]
> I would like to know for sure: do I have to do Canvas.Lock or such the > lock is unnecessary?
Then you have to use locking.
-- Jens Gruschel http://www.pegtop.net