私はGTK#(およびデスクトップ開発全般)が初めてです。プログレスバーとそれをテストするためのボタンだけを使用して、MonoDevelop で小さなアプリをセットアップしました。問題は、偽のプロセスが完了するまで更新されないことです。このリンクMono Best Practicesに従って Application.Invoke() が必要であると言っている他の投稿を見ました。しかし、私はまだこれを機能させることができません。おそらく私の理解の根本的な欠陥です。これが私のコードです:
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;
});
}
}
}