Python等效于C#的SynchronizationContext

时间:2018-11-08 16:56:13

标签: c# python python-3.x multithreading

Python相当于C#的SynchronizationContext吗?

我正在开发一个应用程序,其中有两个线程,即UI线程(需要为主线程)和Logic线程。要在UI中使用它们的对象,必须在UI线程中创建它们。问题是,当显示UI时,UI线程“卡住”了我正在使用的lib的阻塞调用

我正在寻找一种在UI线程中从逻辑线程中创建对象的方法。

关于SynchronizationContext

的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

0 个答案:

没有答案