我刚从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
可能是您想要的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句