Developer, Former MVP, now at Microsoft - Best of 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
// ...or any other type/params you want delegate void SomeCustomDelegate(object o); // This method runs on a non-GUI thread e.g. Threading.Timer internal void OnNonGuiThread(Object o){ // if you have more than one argument just add it to the array object[] arr = {o}; // assuming all this code is in a form this.BeginInvoke(new SomeCustomDelegate(UpdateBox), arr); } // This method runs on GUI thread private void UpdateBox(Object o /*other arguments as defined by SomeCustomDelegate*/){ // TODO use o and other arguments this.Text = o.ToString(); }