没有输入的Lambda表达式

时间:2013-07-17 09:07:36

标签: .net c#-4.0

我看到一个关于同步和使用线程的程序。在程序的一部分中,我看到了这个lambda表达式,我感到困惑。

for (int i = 0; i < 100; i++)
{
  Thread.Sleep(100);
  progressBar1.BeginInvoke(new Action(() =>
  {
    progressBar1.Value = i;
    listBox1.Items.Add(i.ToString());
  }));
}

我的问题是,为什么这个lambda表达式没有任何输入参数?

2 个答案:

答案 0 :(得分:1)

Control.BeginInvoke 方法的描述中写道:

// Summary:
//     Executes the specified delegate asynchronously on the 
//     thread that the control'sunderlying handle was created on.
//
// Parameters:
//   method:
//     A delegate to a method that takes no parameters.

来自Action Delegate MS文章:

  

封装没有参数但不返回的方法   值。

答案 1 :(得分:1)

这里的目标是执行一些访问UI线程上的UI的语句。该操作不需要任何输入(iprogressBar1listBox1被捕获)并且没有输出,只有副作用(修改UI)。