See
Report #: 43020 Status: Reported TBitmap.Canvas.Lock is a MUST in multithreading applications http://qc.embarcadero.com/wc/qcmain.aspx?d=43020
Jan Derk: Contrary to what the Delphi documentation says: one must lock all canvasses, both source and targets, in threads even if you do not share them with other threads, because the GDI object caching mechanism that runs in the main thread may just release your DC when your thread is not expecting it.
TJPEGImage.Draw() is not thread safe http://qc.embarcadero.com/wc/qcmain.aspx?d=55871
-- Alex