public static void CrossThreadCalls(this Control ctl, ThreadStart del) { try { if (del == null) { return; } if (ctl.InvokeRequired) { ctl.Invoke(del, null); } else { del(); } } catch (Exception err) { MessageBox.Show("CTL:" + ctl.Text + "\r\nDEL:" + del.ToString() + "\r\n" + err.Message.ToString(), "CrossThreadCall"); } }
void StartRun(ThreadStart start) { builder = new StringBuilder(); new Thread(() => { lock (this) { try { if (start != null) { start(); } } catch (System.Exception ex) { Logger.error(string.Format("Run is Error method : {0} error : {1}", start.ToString(), ex.ToString())); } } EndRun(); }).Start(); }