The problem is not within Owlkettle, but in the graphical stack. Almost every GUI library isn't thread-safe and can be updated only from its main thread. The only multithread libraries are Vulkan, DirectX 12 and Metal. Anything else will crash when you will try to update GUI from another thread.
The problem can be solved by adding a timer to a main thread and read the data shared between threads. That's why almost every GUI library has implemented timers. :)