NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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)