rendered paste bodyusing System;
using System.Threading;
using Gtk;
namespace IdleEx
{
class Driver
{
static Button GoButton;
static TextView MsgText;
static bool GtkSync_OtherThreadDone()
{
Console.WriteLine("GtkSync");
GoButton.Sensitive = true;
MsgText.Buffer.Text += "Got Done Message.\n";
return false;
}
static void Job()
{
Thread.Sleep(3000);
Console.WriteLine("OtherThread Posting a job.");
GLib.Idle.Add(new GLib.IdleHandler(GtkSync_OtherThreadDone));
}
[STAThread]
static void Main(string[] args)
{
Application.Init();
GoButton = new Button("Go!");
GoButton.Clicked += new EventHandler(GoButton_Clicked);
MsgText = new TextView();
ScrolledWindow scroller = new ScrolledWindow();
scroller.Add(MsgText);
VBox vbox = new VBox(false, 5);
vbox.PackStart(GoButton);
vbox.PackStart(scroller);
Window win = new Window("IdleEx");
win.DeleteEvent += new DeleteEventHandler(win_DeleteEvent);
win.Add(vbox);
win.ShowAll();
Application.Run();
}
private static void GoButton_Clicked(object sender, EventArgs e)
{
GoButton.Sensitive = false;
Thread thr = new Thread(new ThreadStart(Job));
thr.Start();
}
private static void win_DeleteEvent(object o, DeleteEventArgs args)
{
Application.Quit();
args.RetVal = true;
}
}
}