Files
Nexus/2023/scripts/rigging_tools/ngskintools2/ui/parallel.py
2025-11-24 08:27:50 +08:00

40 lines
955 B
Python

from threading import Thread
from maya import utils
from ngSkinTools2.api.python_compatibility import Object
class ParallelTask(Object):
def __init__(self):
self.__run_handlers = []
self.__done_handlers = []
def add_run_handler(self, handler):
self.__run_handlers.append(handler)
def add_done_handler(self, handler):
self.__done_handlers.append(handler)
def start(self, async_exec=True):
def done():
for i in self.__done_handlers:
i(self)
def thread():
for i in self.__run_handlers:
i(self)
if async_exec:
utils.executeDeferred(done)
else:
done()
self.current_thread = Thread(target=thread)
if async_exec:
self.current_thread.start()
else:
self.current_thread.run()
def wait(self):
self.current_thread.join()