GTK呼叫功能每x秒
所以我正在为现有的c应用程序编写一个gui.
gui只是一个简单的界面,它只显示并且不会真正将任何信息反馈到应用程序中.但是如果有一些新信息,我需要检查一个链表. 现在我不想使用另一个线程手动运行该功能来执行此操作. 有没有办法’破解’定时函数或回调到GTK主循环?这样我的函数每秒调用一次或类似的东西.当然我的功能是非阻塞的. 我在写c. 解决方法
GTK包括glib. glib是gtk和许多其他gobject库使用的核心算法和数据结构库. glib提供将从mainloop调用的函数.包含gtk时包含glib.
您需要将GSourceFunc作为回调GSourceFunc isgboolean的签名 gboolean YourCallBack(void* data) { GSList list = (GSList*) data; // Check your list return TRUE; // return FALSE to remove the timeout } 在其他地方你必须注册该功能: GSList* List; //This is a singly linked list provided by glib as well. g_timeout_add_seconds(1,YourCallBack,List); g_timeout_add的第一个参数是每次调用回调函数之间的秒数,第二个参数是指向GSourceFunc(回调函数)的指针,第三个参数是指向要传递给回调函数的数据的指针. 编辑GSlist通常是指向列表中某个节点(第一个)的指针,因为列表可以更改,节点可以从列表中预先添加或删除,这是危险的.虽然此示例显示了如何使用g_timeout_add_seconds,但您需要一种更安全的方式来访问列表,然后我将在此处介绍.然而,这确实显示了如何使用g_timeout_add_x系列函数的机制. 编辑:您可以使用g_timeout_add指定比秒更小的间隔的回调,但如果您不需要这样的精度,g_timeout_add_seconds会花费更少的资源. 请参阅:https://developer.gnome.org/glib/2.42/glib-The-Main-Event-Loop.html#g-timeout-add以获取更多信息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |