2013-07-31 26 views
2

林不知道,但它是所謂的內聯,當你做的這一切在同一行?在BackgroundWorker中內聯一些事件?

我我的代碼,我有這個BackgroundWorker的。 DoWorker強制執行睡眠時間,RunWorkerCompleted只是執行一小段代碼。有沒有可能,而不是定義一個函數的做這一切像

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

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

,這是什麼正確的語法,而這是什麼所謂的一行?當你有一個簡單的任務時,它很好保持簡單:-)

+0

這就是所謂的lambda表達式。內聯意味着將方法體放到代碼中,而不是調用方法。 – wudzik

+1

@wudzik感謝,我的谷歌搜索成爲好了很多,現在我知道我在找:-) – Jason94

+0

參見[這個問題](http://stackoverflow.com/q/473782/238902) – Default

回答

1

你很困惑inlininglambda expressionsInlining是由其主體更換方法的調用,例如:

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

相關問題