gpt4 book ai didi

multithreading - 单击按钮时如何在vala中异步运行函数

转载 作者:行者123 更新时间:2023-12-03 12:52:22 24 4
gpt4 key购买 nike

我刚从Vala开始,遇到了障碍

当我尝试在按钮上运行大型功能时,它将锁定整个应用程序,直到完成

我该如何将类似以下内容的内容放入线程或给予异步回调?

    var btn = new Gtk.Button();

btn.label = "Run something massive!";

btn.clicked.connect (() => {
Process.spawn_command_line_sync("gksudo apt-get update",
out ls_stdout,
out ls_stderr,
out ls_status);

btn.set_sensitive (false);
});

最佳答案

在Gtk +中,只有一个线程可以处理GUI事件。如果要执行后台进程,则可以创建线程或拆分任务并在主循环中对其进行处理。我推荐后者。

要启动进程,请考虑GLib.Process.spawn_async。要知道进程何时退出,您将必须使用ChildWatch安装处理程序。
ChildWatch的示例可能是您想要的。

关于multithreading - 单击按钮时如何在vala中异步运行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25633941/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com