Archive for the ‘code’ Category

>Timer and GUI

April 17th, 2009

>One cannot use the System.Timers.Timer to update the GUI, instead one gets a cross-thread exception. The GUI can’t be updated from another thread.

A nice trick to solve this is to use a method that is sensitive for if the call comes from another thread than the GUI is running on.


private delegate void SetTextDelegate(Label label, string text);

private void SetText(Label label, string text)
{
if (this.InvokeRequired)
{
IAsyncResult res = BeginInvoke(new SetTextDelegate(SetText), label, text);
EndInvoke(res);
}
label.Text = text;
}

Honor those who should.

categories: code, tip | no comments »