6

我需要在执行时修改 GLib 的超时间隔。那可能吗?我查看了源代码,对我来说似乎可行,但需要使用 GLib 内部的一些非公共函数。我应该重新实现 GTimeoutSource 还是有办法做到这一点?

4

1 回答 1

3

在您的超时函数中,您可以使用新的超时间隔重新添加该函数,然后返回FALSE以删除旧间隔的超时:

gboolean 
my_timeout_function(gpointer data)
{
    // do stuff
    // ...

    if(need_to_change_interval)
    {
        g_timeout_add(new_interval, (GSourceFunc)my_timeout_function, data);
        return FALSE;
    }
    return TRUE;
}
于 2010-06-01T09:59:35.580 回答