Greetings,
well maybe
As i explained above, ollydbg has a debugger loop (in fact, ollydbg itself is single threaded).
If you issue commands from the plugin's callback, they will be processed within the context of the thread that called the plugin callback (ollydbg's main thread).
This has the consequences as explained in my previous post (issueing commands in row)
You are spawning a separate (command) thread, unknown to ollydbg, to issue commands.
This imposes several penalties under windows operating systems due to its design.
As you might know, message queue (and all associated window objects) belong to thread that created them.
One cannot take out actions (like redrawing) by directly calling gui API functions on another thread context (it might work sometimes but often fails).
This is why one need to synchronize these actions to the right thread context (using SendMessage/PostMessage calls).
Imagine, what *might* happen if you call one of ollydbg's exported API functions.
Maybe the function is complex.
Imagine, the function does some stuff which invalidates internal data, structures ... and the gui stuff (forms/windows) itself.
Guess - the function calls gui/control functions implicit - uh oh wait ... Remember which thread context we are? Yike!
Not the one, that created the windows nor executes the main message loop.
Usually, applications become unstable at this point.
Maybe ollydbg maintains some state variable (which gets updated while/after processing main debugger loop) or checks the thread context before calling any gui stuff (which is tedious, because the plugin API isnt designed to be "multithread safe"

.
Only the author knows, how the stuff in ollydbg's exported API is exactly implemented.
Some functions may implicitly call gui APIs - some functions might not.
My advice: DONT call any ollydbg API functions from a thread context, unknown to ollybdg itself (that is any thread, not created by the main program itself)!
It will lead to side effects, things dont work as expected and finally ollydbg might become unstable.
Just issue the commands one-by-one each time the debug event callback gets called.
Maintain some internal state machine or command queue to implement this behavior.
Regards,
A. Focht.