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 表达式没有任何输入参数?

4

2 回答 2

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 文章:

封装一个没有参数且不返回值的方法。

于 2013-07-17T09:10:33.977 回答
1

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

于 2013-07-17T09:27:00.697 回答