Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / desktop / WinForms

Extension method to update controls in a MultiThreaded WinForm application.

4.67/5 (3 votes)
18 Jun 2011CPOL 24K  
This extension can be used to update controls in a thread safe manner. This method requires a MethodInvoker delegate as input parameter. It just checks whether the control is on a different thread than the caller.
This is the extension method:

C#
public static void ThreadSafeCall(this Control control, MethodInvoker method)
 {
     if (control.InvokeRequired)
     {
         try
         {
             control.Invoke(method);
         }
         catch (Exception ex)
         {
             MessageBox.Show(ex.ToString());
         }
     }
     else
     {
         method.Invoke();
     }
 }


Below is the use of it:
txtOutput.ThreadSafeCall((MethodInvoker)delegate { txtOutput.Text = "Updated"; });

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)