Lambda表达式作为要用作AsTask()回调的参数

时间:2013-07-12 08:49:17

标签: c# .net windows-8 windows-store-apps

我在方法中使用BackgroundTransfer.DownloadOperation,我希望调用者能够传递一个lambda表达式,以便在更新进度时调用:

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 个答案:

答案 0 :(得分:3)

您使用的AsTask扩展方法不包含接受委托/ Func的签名,因此您无法执行.AsTask(...=>...)

但你可以在这一行中使用lambda:

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

由于Progress<T>的构造函数接受Action<T>