gpt4 book ai didi

c# - 如何在 lambda 方法中传递参数和异步关键字?

转载 作者:行者123 更新时间:2023-12-03 19:08:17 25 4
gpt4 key购买 nike

如何在此代码中传递 framworkElement 并使用 async 关键字?

SaveImage = new RelayCommand<FrameworkElement>(frameworkElementForPrint =>  
{
StorageFile file = await PickImageFileToSave();
SaveVisualElementToFile(frameworkElementForPrint, file);
});

因为现在不能使用 await...

最佳答案

我建议您将所有逻辑分解为一个单独的方法,例如:

public async Task SaveImageAsync(FrameworkElement frameworkElementForPrint)
{
StorageFile file = await PickImageFileToSaveAsync();
await SaveVisualElementToFileAsync(frameworkElementForPrint, file);
}

然后将其包装到 RelayCommand 中:

SaveImage = new RelayCommand<FrameworkElement>(async arg => { await SaveImageAsync(arg); });

这种分离允许您对 SaveImageAsync 逻辑进行单元测试(当然假设您使用适当的抽象进行了重构)。

This MSDN articleasync 命令有更多详细信息。

关于c# - 如何在 lambda 方法中传递参数和异步关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21637769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com