我正在继续我的计算机检查程序。它是基于 WXPYTHON 的。
该程序显示一个带有标签的界面和一个“运行”按钮,当单击该按钮时,它会在 mainFrame 类中启动“doCheck”函数
doCheck 然后启动所有线程:
Thread1 = computerCheck()
Thread2 = countProcess()
Thread3 = findProcess()
Thread4 = findProtection()
Thread5 = bitlockerCheck()
Thread1.start()
Thread2.start()
Thread3.start()
Thread4.start()
Thread5.start()
线程正在执行一些 WMI 检查等并通过使用 pubsub.sendMessage() 报告 MainFrame 类具有一个侦听器函数,该函数在收到消息时更新 GUI 标签。
到目前为止,一切都很好!艾利斯运作良好。但是现在我想知道所有启动的线程何时完成。这就是问题所在......如果我在线程上使用 join(),则 PUBSUB GUI 更新在所有线程完成之前都不起作用。如果我在循环“isAlive()”的 doCheck 函数中使用 while 语句,它基本上会执行相同的操作,等待一切结束。同样,PUBSUB 也被停止了......
所以我被困在这里。到目前为止,该程序运行良好,但现在我需要在所有检查完成/完成后启动下一步,但我无法弄清楚如何在不阻止 PUBSUB 阻止运行时更新的情况下完成此操作......
实际线程的片段:
class findProcess(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
my_object = dict(status='Running', result='')
wx.CallAfter(pub.sendMessage, 'testListener', message=3,arg2=my_object)
附言。message 参数用于知道应该更新哪些标签...
有什么建议么?我可以在需要时发布更多代码。
谢谢