我是 GTK# 的新手(以及一般的桌面开发)。我在 MonoDevelop 中设置了一个小应用程序,只有一个进度条和一个按钮来测试它。问题是在我的假进程完成之前它不会更新。我看到其他帖子说 Application.Invoke() 根据此链接Mono Best Practices是必需的。但是我仍然无法让这件事起作用,这可能是我理解的一个根本缺陷。这是我的代码:
using System;
using Gtk;
using System.Diagnostics;
using System.Threading;
public partial class MainWindow: Gtk.Window
{
public MainWindow (): base (Gtk.WindowType.Toplevel)
{
Build ();
}
protected void OnDeleteEvent (object sender, DeleteEventArgs a)
{
Application.Quit ();
a.RetVal = true;
}
protected void OnOkClicked (object sender, EventArgs e)
{
for (int i = 0; i < 100; i++){
Thread.Sleep(1000);
Application.Invoke (delegate {
progressbar1.Fraction = i / 100.0;
});
}
}
}