2

我正在使用 Python 和 wx Simple Wizard 开发一个项目。在我的向导中,当移动到第四页也是最后一页时,它会启动一个名为beginCreateInstallation(). 这反过来为文件副本创建了一个单独的线程(以及其他一些次要细线),但也使向导线程保持活动状态。

这是方法:

def beginCreateInstallation(self, parent):
    '''Install the files to the drive. We need to do this
    in a thread so the gui continues to update.
    '''
    
    #Disable the buttons so they can't move.
    wx.FindWindowById(wx.ID_BACKWARD).Disable()
    wx.FindWindowById(wx.ID_FORWARD).Disable()
    
    #Start the thread
    #from installer import createInstall 
    createInstallThread = threading.Thread(target=self.Installer.createInstall, args=[parent, self.selectedDrive])
    createInstallThread.setDaemon(True)
    try: createInstallThread.start()
    except: print "Boom goes the dynamite."

运行的线程是Installer.createInstall. 最后createInstall(),它调用原始类中的一个方法installComplete()

所以,在线程结束时,它调用了父级的一个方法,然后应该死掉。

这在 Windows 上运行良好,但在 OSX 上出现总线错误和“内核保护错误”。

beginCreateInstall()如果我杀死线程,并将以下行添加到我添加这些行的底部:

        createInstallThread.join()
        self.installComplete()

这反过来会杀死线程并冻结向导,但我没有收到总线错误。

有什么帮助让这个线程工作吗?我在哪里可以让线程在 OSX 上工作?

4

0 回答 0