threadedLoader.py (828B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\sov\threadedLoader.py 2 import uthread2 3 4 class ThreadedLoader(object): 5 6 def __init__(self, name = None): 7 self.name = name or 'ThreadedLoader' 8 self.debugDisplayName = name 9 self.threadDict = {} 10 11 def StartLoading(self, func, classInstance, *args): 12 funcName = '%s_%s' % (func.__name__, id(classInstance)) 13 existingThread = self.threadDict.pop(funcName, None) 14 if existingThread: 15 existingThread.kill() 16 self.threadDict[funcName] = uthread2.start_tasklet(self._CallFunc_thread, func, funcName, *args) 17 18 def _CallFunc_thread(self, func, funcName, *args): 19 try: 20 func(*args) 21 finally: 22 self.threadDict.pop(funcName, None)