Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Languages / C#4.0

Changing a WinForms Control on the 'UI' Thread from another Thread

5.00/5 (9 votes)
23 Mar 2010CPOL 1  
This version works regardless of parameters:public void AnyMethod(int parameter){ MethodInvoker wrapper = new MethodInvoker(delegate() { // Do your thing here! }); if (this.InvokeRequired) this.Invoke(wrapper); else wrapper();}Note also...
This version works regardless of parameters:
C#
public void AnyMethod(int parameter)
{
    MethodInvoker wrapper = new MethodInvoker(delegate()
    {
        // Do your thing here!
    });
    if (this.InvokeRequired)
        this.Invoke(wrapper);
    else
        wrapper();
}

Note also that it does not need to be wrapped in a method to work. You can just place it inline. Any required variables will be captured by the delegate.
C#
int parameter = 5;
MethodInvoker wrapper = new MethodInvoker(delegate()
{
    // Do your thing here! For example:
    lblCount.Text = parameter.ToString();
});
if (this.InvokeRequired)
    this.Invoke(wrapper);
else
    wrapper();

License

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