擅长:python、mysql、java
<p>在这种特殊情况下,将线程分配为守护进程是有效的,除非我们真正关闭应用程序,否则这并没有真正的帮助。如果我只是关上一扇窗户或一个框架呢?然后我们陷入了调用这些失效GUI项并挂起线程的方法的问题。。。你知道吗</p>
<p>我们需要一种方法来防止这些方法被调用,但是我们不能依赖于先检查后调用的解决方案,因为这些不是原子操作。你知道吗</p>
<p>还有一个主意。。。人们怎么看待这个问题?你知道吗</p>
<pre><code> # The tkinter GUI objects were hanging indefinitely upon calls to their methods after
# the window was closed, so we will replace them with dummy objects that will recieve
# those calls instead
def deactivate(self):
self._active = False
self.varToUpdate = Stub() # we could probably just reinitialize an IntVar
self.bar = Stub()
self.frame = Stub()
class Stub(object):
def __init__(self):
pass
def config(self, **kwargs):
pass
def set(self, value):
pass
</code></pre>
<p>我们也可以简单地删除对象并添加处理,以便在调用现在不存在的对象时捕获结果异常。。。你知道吗</p>
<pre><code> def deactivate(self):
self._active = False
del self.varToUpdate
del self.bar
del self.frame
</code></pre>
<p>不幸的是,即使使用这些解决方案,我认为仍然有可能在调用GUI对象之后关闭对象。你知道吗</p>