Python相当于C#的SynchronizationContext吗?
我正在开发一个应用程序,其中有两个线程,即UI线程(需要为主线程)和Logic线程。要在UI中使用它们的对象,必须在UI线程中创建它们。问题是,当显示UI时,UI线程“卡住”了我正在使用的lib的阻塞调用>
我正在寻找一种在UI线程中从逻辑线程中创建对象的方法。
的StackOverfow什么不起作用:
import threading
class LogicThread(threading.Thread):
def __init__(self, mw):
threading.Thread.__init__(self)
self.mw = mw
self.daemon = True
def run(self):
self.wdc = WindowDataContext() # ok, no problem
self.mw.DataContext = self.wdc # Doesn't work, object must
# be created in UI thread
mw = MainWindow()
t = LogicThread(mw)
t.start()
app.Run(mw) # blocking call
我现在正在工作的东西:
import threading
class LogicThread(threading.Thread):
def __init__(self, wdc):
threading.Thread.__init__(self)
self.wdc = wdc
self.daemon = True
def run(self):
i = 0
while True:
self.wdc.Text = str(i) # no problem
print(i)
i += 1
time.sleep(0.5)
wdc = WindowDataContext()
mw = MainWindow()
mw.DataContext = wdc
t = LogicThread(wdc)
t.start()
app.Run(mw) # blocking call