private delegate void CrossThreadOperationControl(); // 將代理執行個體化為一個匿名代理 CrossThreadOperationControl CrossDelete = delegate() { MessageBoxButtons buttons = MessageBoxButtons.OKCancel; DialogResult dr = MessageBox.Show("Master,please to have a rest!", "Interrupt", buttons); if (dr == DialogResult.OK) { BlockInput(true); SendMessage(this.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 2); myTimere.Stop(); System.Threading.Thread.Sleep(mySpantime); myTimere.Start(); BlockInput(false); } else { myWatch.Stop(); MessageBox.Show("Time setting be cancled!"); Application.Exit(); } }; this.Invoke(CrossDelete);方法2 this.Invoke(new MethodInvoker(delegate() { MessageBoxButtons buttons = MessageBoxButtons.OKCancel; DialogResult dr = MessageBox.Show("Master,please to have a rest!", "Interrupt", buttons); if (dr == DialogResult.OK) { BlockInput(true); SendMessage(this.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 2); myTimere.Stop(); System.Threading.Thread.Sleep(mySpantime); myTimere.Start(); BlockInput(false); } else { myWatch.Stop(); MessageBox.Show("Time setting be cancled!"); Application.Exit(); } }));