Lambda表达式解决线程间操作无效问题

2021-07-08  本文已影响0人  GoodTekken

传统方式:

    delegate void ChangeDelegate(string text);
    private void Settext(string text)
    {
        textBox1.Text = text;
    }

    private void Change(EventArgs e)
    {
        PublisherEventArgs args = (PublisherEventArgs)e;
        string text = args.text;
        this.BeginInvoke(new ChangeDelegate(Settext), text);
    }

其中调用了事件订阅的方法,直接使用可以更改方法名为private void Change(string text)即可直接赋值。
这种方法的缺点时需要在外部声明委托和方法,代码不够简单。所以优化后的结果如下:

    private void Change(EventArgs e)
    {
        PublisherEventArgs args = (PublisherEventArgs)e;
        string text = args.text;
        Action<string> Set = text => textBox1.Text = text;
        this.BeginInvoke(Set, text);
    }

因此使用Lambdad可以让代码更加优雅。

上一篇下一篇

猜你喜欢

热点阅读