当我需要我的程序的一部分,其中GLib超时功能设置为
self.timeout_id = GLib.timeout_add_seconds(refresh, self._check_price)
我用
def stop(self):
if self.timeout_id:
GLib.source_remove(self.timeout_id)
确保此timeout_id
在尝试删除之前仍然存在。
然而,我仍然会不时收到这些令人讨厌的错误消息:
警告:尝试将其删除时未找到来源ID 443 GLib.source_remove(self.timeout_id)
怎么办?
答案 0 :(得分:2)
显然,来源通过stop()
之外的其他控制路径被移除。我能想到的唯一候选人(来自您提供的代码)是self._check_price
方法。如果您从那里返回False
/ GLib.SOURCE_REMOVE
,则还应取消设置self.timeout_id
:
def _check_price(self):
…
self.timeout_id = 0
return GLib.SOURCE_REMOVE