我看到一个关于同步和使用线程的程序。在程序的一部分中,我看到了这个lambda表达式,我感到困惑。
for (int i = 0; i < 100; i++)
{
Thread.Sleep(100);
progressBar1.BeginInvoke(new Action(() =>
{
progressBar1.Value = i;
listBox1.Items.Add(i.ToString());
}));
}
我的问题是,为什么这个lambda表达式没有任何输入参数?
答案 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的语句。该操作不需要任何输入(i
,progressBar1
和listBox1
被捕获)并且没有输出,只有副作用(修改UI)。