2013-07-12 56 views
2

我使用BackgroundTransfer.DownloadOperation的方法中,我想呼叫者能夠傳lambda表達式當進度被更新爲被調用:Lambda表達式作爲參數被用作AsTask()回調

DownloadOperation dwo = await DownloadFile(fileInfo,file); 

這工作:

var progressCallback = new Progress<DownloadOperation>(DefaultProgressCallback); 
await dwo.StartAsync().AsTask(progressCallback); 

但是我怎麼定義一個lambda參數才能做到這一點?

var progressCallback = lambdaFromMethodCaller; 
await dwo.StartAsync().AsTask(progressCallback); 
+1

lambda參數是'Func' read about - >'Func ' – wudzik

+0

@wudzik我嘗試'Func '作爲參數,但我得到: 不能隱式轉換類型'System.Progress '到'System.Func ' – Darajan

回答

3

您使用不含有接受委託/ FUNC簽名,所以AsTask擴展方法你不能做.AsTask(...=>...)

但是你可以在此行中使用的λ:

var progressCallback = new Progress<DownloadOperation>(...=>...); 

由於Progress<T>的構造函數接受Action<T>

+0

這工作,謝謝。 – Darajan

相關問題