Control中的beginInvoke于Delegate中的beginInove一起使用。使用delegate中的beginInvoke来产生一个新线程。在新线程调用的方法中使用Control中的beginInvoke来进行UI操作。
private void mouseDown(Object sender, MouseEventArgs e) { TestDelegate s = new TestDelegate(showXY); s.BeginInvoke(e.X, e.Y, null, null); //产生新线程。 } private void showXY(int x, int y) { Thread.Sleep(5000); UIDelegate UIDelegate = delegate (string istrue) { this.Text = ("X: " + istrue + " Y: " + y); }; this.Invoke(UIDelegate,"Hello"); //使用Invoke操作UI,调用带参数的委托。 } public delegate void TestDelegate(int x, int y); public delegate void UIDelegate(string istrue);