GTK呼叫功能每x秒

GTK呼叫功能每x秒,第1张

概述所以我正在为现有的c应用程序编写一个gui. gui只是一个简单的界面,它只显示并且不会真正将任何信息反馈到应用程序中.但是如果有一些新信息,我需要检查一个链表. 现在我不想使用另一个线程手动运行该功能来执行此 *** 作. 有没有办法’破解’定时函数或回调到GTK主循环?这样我的函数每秒调用一次或类似的东西.当然我的功能是非阻塞的. 我在写c. GTK包括glib. glib是gtk和许多其他gobje 所以我正在为现有的c应用程序编写一个gui.

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秒所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1218217.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存