2

我在一个方法中使用 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);
4

1 回答 1

3

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

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

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

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

于 2013-07-12T09:11:21.703 回答