2011-01-09 59 views
1

最近做了很多silverlight編程,並且很喜歡它,但是當然silverlight是異步的,所以我不得不設置一個事件處理程序來在異步完成時調用。這當然是偉大的,但我只是得到了很多的代碼...基本上我需要一個wcf服務的每個調用的2個方法。我最近發現了以下內容異步使用Lambdas完成的事件而不是真正的方法?

client.LoadClientsCompleted += (sender, e) => 
{ 
    // My Code 
}; 

client.LoadClientsAsync(clientID); 

它似乎工作,它使用lambdas而不是物理方法。我知道這不會改變技術的運作,而​​且它仍然是異步的。但它似乎整理了我的代碼相當多。

我很想聽聽任何關於天氣的評論,我應該使用這個,有沒有使用PROS和CONS?

按我說的直接點在一個新的方法事件的偉大工程,以及但從技術上我有2種方法每次調用我做...代碼越來越:-)

使用拉姆達方式,我在儘管只在完成時觸發回調事件,但至少要保留我的回調事件。它似乎讓事情變得更容易,但是這種方法有什麼問題嗎?

回答

3

一個大親的是,lambda表達式可以從他們的周圍捕獲的變量的值:

client.LoadClientsCompleted += (sender, e) => 
{ 
    // My Code 
    // your code can use clientID here 
}; 
client.LoadClientsAsync(clientID); 
+0

哇,這是一個加號!是的,如果我使用一個單獨的方法,我將不得不尋找其他方法來讀取初始方法中的變量!這我不知道!謝謝! – Martin

+0

獲得對包含範圍的訪問確實很棒,並且可以大大簡化一些事情 - 您不必創建一些輔助類來保存狀態並將它們傳遞給回調函數,因爲編譯器通過lambda表達式爲您工作。 –