这样写的好处是TestMethod在同步和异步线程下,都能顺利地被调用.
MethodInvoker和Action都是.NET 2.0内置的Delegate类型,让你方法地回调一个没有参数的方法,而不用自己去定义新的Delegate.
- private void button1_Click(object sender, EventArgs e)
- {
- Thread t = new Thread(new ThreadStart(TestMethod));
- t.Start();
- }
- public void TestMethod()
- {
- if (this.InvokeRequired)
- {
- //MethodInvoker handler = new MethodInvoker(TestMethod);
- Action handler = new Action(TestMethod);
- this.Invoke(handler, null);
- }
- else
- {
- this.Text = "Async Invoked.";
- MessageBox.Show("Async Invoked");
- }
- }
- public void Calc(int a, int b, int c, int d)
- {
- var r = a + b + c + d;
- }