使用GLib.source_remove()避免GLib发出警告

时间:2018-05-02 14:23:25

标签: python glib

当我需要我的程序的一部分,其中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)

怎么办?

1 个答案:

答案 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