I'm not sure, but, let's see if the problem can be systematically isolated.

This is what is happening (I'll use --> for "calls"):
Serveur.UpdateLog(string) --> Serveur.OnStatusChanged(...) --> /* via event */ -->
FauxServeur.StatusChanged(...) --> FauxServeur.UpdateLog(string) --> textBoxLog.AppendText(string)


Now, go backwards up the chain, and comment out each call until you isolate the problem. For example, the class of textBoxLog (dunno what it is since you didn't show it) could be the source of the problem. If not, then go one level up, and comment out the call to UpdateLog(...) in the FauxServeur class. (If it's an event handler, you can just return at the start.)
Repeat until the bug disappears - once it does, you've narrowed the list of suspects to a single method. Then come hear and tell us what you found out, maybe someone will be able to help.

You can also put a breakpoint at first the UpdateLog() call in Serveur class, and then observe what happens by going step-by-step (F11 - "Step Into").

It probably has something to do with threading - but not directly. Maybe the event is trying to invoke the handler on an invalid object. Is there an exception? If so, of what kind? Or it just blocks? What was the expected output?
The message "The thread '<No Name>' (0x1bec) has exited with code 0" doesn't tell us much, as traditionally, exit code 0 signifies successful completion...

P.S. Why are you using DynamicInvoke?