阿牛 - 专注.NET开发

如果梦想与实现之间有一道不可逾越的鸿沟,那么“执行力”就是跨越这道鸿沟的桥梁。

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

这样写的好处是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");
    }
}

 

.NET 3.0中有一个Action<T>,支持四个Generic的参数.

System.Action<int, int, int, int> handler2 = new Action<int, int, int, int>(Calc);
                this.Invoke(handler2, 1, 2, 3, 4);
public void Calc(int a, int b, int c, int d)
        {
            var r = a + b + c + d;
        }
posted on 2009-11-03 10:41  阿牛-专注金融行业开发  阅读(509)  评论(0编辑  收藏  举报