using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; namespace EstrazioneAnagrafica { public static class ThreadHelper { delegate void SetTextCallback(Form f, Control ctrl, string text); delegate void SetStatusCallback (Form f, Control ctrl, bool enabled); delegate void SetVisibilityCallback (Form f, Control ctrl, bool visible); /// /// Set text property of various controls /// /// The calling form /// /// public static void SetText(Form form, Control ctrl, string text) { // InvokeRequired required compares the thread ID of the // calling thread to the thread ID of the creating thread. // If these threads are different, it returns true. if (ctrl.InvokeRequired) { SetTextCallback d = new SetTextCallback(SetText); form.Invoke(d, new object[] { form, ctrl, text }); } else { ctrl.Text = text; } } public static void SetStatus(Form form, Control ctrl, bool enabled) { // InvokeRequired required compares the thread ID of the // calling thread to the thread ID of the creating thread. // If these threads are different, it returns true. if (ctrl.InvokeRequired) { SetStatusCallback d = new SetStatusCallback(SetStatus); form.Invoke(d, new object[] { form, ctrl, enabled }); } else { ctrl.Enabled = enabled; } } public static void SetVisibility(Form form, Control ctrl, bool visible) { // InvokeRequired required compares the thread ID of the // calling thread to the thread ID of the creating thread. // If these threads are different, it returns true. if (ctrl.InvokeRequired) { SetVisibilityCallback d = new SetVisibilityCallback(SetVisibility); form.Invoke(d, new object[] { form, ctrl, visible }); } else { ctrl.Visible = visible; } } } }