我在方法中使用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);
答案 0 :(得分:3)
您使用的AsTask扩展方法不包含接受委托/ Func的签名,因此您无法执行.AsTask(...=>...)
但你可以在这一行中使用lambda:
var progressCallback = new Progress<DownloadOperation>(...=>...);
由于Progress<T>
的构造函数接受Action<T>