Synchronisierung funktioniert über Window Messages. Ist der UI-Thread also blockiert, wird tatsächlich nichts abgearbeitet und du hast deinen Deadlock

.
Es gibt übrigens eine Regel, beim Halten eines Locks nie Events zu feuern. Denn ein Lock soll ja eigentlich
feinkörnig sein, was beim Aufrufen unbekannter Methoden schlecht sichergestellt werden kann

.