在BackgroundWorker中内联一些事件?

时间:2013-07-31 08:57:51

标签: c# lambda

我不确定,但是当你在一行中完成所有内容时它会被称为内联吗?

我的代码我有这个BackgroundWorker。 DoWorker强制执行一秒休眠,RunWorkerCompleted只执行一些代码。是否可以代替定义一个函数,在一行中完成所有操作,如

.DoWork += ((sender, arg) => { ... }); 

.RunWorkerCompleted += ((sender, arg...

这个的正确语法是什么,这叫做什么?当你手头有一个简单的任务时,保持简单是很好的: - )

1 个答案:

答案 0 :(得分:1)

您将inlininglambda expressions混淆。 Inlining正在取代方法调用方法,例如:

int TimesTwo(int x) 
{
   return x * 2;
}

//before inlining:
int a = TimesTwo(6) + TimesTwo(7);
//after inlining:
int a = 6 * 2 + 7 * 2;

这是一种编译器优化技术,可以避免方法调用开销。

对于您的BackgroundWorker示例,正确的语法是:

 BackgroundWorker worker = new BackgroundWorker();
 worker.DoWork += (sender, e) => RunMyMethod();
 //or
 worker.DoWork += (sender, e) => { RunMyMethod(); }

有关详细信息,请参阅MSDN