我有主窗口,按钮“打开文件”。单击文件选择器对话框出现,然后加载文件。我想在加载数据时显示进度对话框。但是,当我调用Run
时dlg.Run();
load_data(); // not executed
如果我调用Show
,执行就会停止(我必须关闭对话框以加载数据)dlg.Show();
load_data();
然后加载完成,但对话框没有显示。
那么,如何显示模态,进度对话框并同时加载数据?
注意:这个问题只是关于显示进度对话框,而不是更新进度条小部件。
答案 0 :(得分:2)
如果您只想显示UI然后加载数据而不处理事件,则以下操作将起到作用:
while (Gtk.Application.EventsPending ())
Gtk.Application.RunIteration ();
你可以把它放在一个方法“FlushEvents”中,然后在显示对话框后调用它,你也可以在加载数据时让它每隔一段时间运行一次,让用户点击取消。
实际上,您可能希望使用线程或推送事件,或者在空闲处理程序中逐步加载。有关更多信息,请参阅此文档:
答案 1 :(得分:0)
好的,我询问了gtk#mono newsgroup,感谢Chris Howie,我终于完成了任务。
简而言之 - 因为也许某人也会陷入其中:
因为对话框是模态的,所以你甚至不必担心等待任务完成 - 它已经由Gtk#完成了。