gui只是一个简单的界面,它只显示并且不会真正将任何信息反馈到应用程序中.但是如果有一些新信息,我需要检查一个链表.
现在我不想使用另一个线程手动运行该功能来执行此 *** 作.
有没有办法’破解’定时函数或回调到GTK主循环?这样我的函数每秒调用一次或类似的东西.当然我的功能是非阻塞的.
我在写c.
解决方法 GTK包括glib. glib是gtk和许多其他gobject库使用的核心算法和数据结构库. glib提供将从mainloop调用的函数.包含gtk时包含glib.您需要将GSourceFunc作为回调GSourceFunc isgboolean的签名
(* GSourceFunc)(gpointer user_data);
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以获取更多信息.
总结以上是内存溢出为你收集整理的GTK呼叫功能每x秒全部内容,希望文章能够帮你解决GTK呼叫功能每x秒所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)