====== Threadpool ====== private static aaa() { ThreadPool.QueueUserWorkItem(threadWorker,this); } private static void threadWorker(object obj) { Form1 f = (Form1)obj; { if (f.comboFrom.InvokeRequired) { f.comboFrom.Invoke(new ComboAddThreadSafeDelegate(ComboAddThreadSafe), f, ComboItem); } } } private delegate void ComboAddThreadSafeDelegate(Form1 f, String val); private static void ComboAddThreadSafe(Form1 f, String val) { f.comboFrom.Items.Add(val); } //or private static aaa() { Action resultCallback = (theResults) => { MessageBox.Show((string)theResults); }; WaitCallback workItem = (dataOrSomeDetails) => { string a = (string)dataOrSomeDetails; resultCallback(a + " someResults"); }; ThreadPool.QueueUserWorkItem(workItem, "text"); }