按钮单击事件处理程序并使用async void



我对async void和按钮处理程序感到困惑。我在一个视频教程中听说使用async void是不明智的。我已经复习了这些问题:

在许多答案中确实使用了这种语法。这就是我的困惑。🧐

这是我的处理器:

async private void InstallStyleButton_Clicked(object sender, EventArgs e)
{
var customFileType =
new FilePickerFileType(new Dictionary<DevicePlatform, IEnumerable<string>>
{
{DevicePlatform.macOS, new[] {"xsl"} }
});
var pickResult = await FilePicker.PickAsync(new PickOptions
{
FileTypes = customFileType,
PickerTitle = "Select template to install"
});
if(pickResult != null)
{
// Build target path
string targetFile = Path.Combine("/Users/Shared/VisitsRota.MacOS/Styles", pickResult.FileName);
// OK to install?
if(!File.Exists(targetFile)) 
{
// Install
File.Copy(pickResult.FullPath, targetFile);
// Add it
StylesPicker.ItemsSource.Add(pickResult.FileName);
// Select it
StylesPicker.SelectedItem = pickResult.FileName;
}
}
}

我意识到硬编码文件夹路径不是一个好主意,我最终会解决这个问题。除此之外,当我尝试它时,我的处理程序似乎在我的开发MacBook Pro上运行良好。

我是否使用async void与按钮处理程序?如果不是,我的联络人该如何调整?

我发现了这个链接,上面写着:

总结第一条准则,您应该更喜欢async Task而不是async voidAsync Task方法支持更容易的错误处理、可组合性和可测试性。该准则的例外是异步事件处理程序,它必须返回void

所以我的代码没问题。

相关内容

  • 没有找到相关文章

最新更新