gpt4 book ai didi

c# - 如何避免在不是 ‘top level’ 的事件处理程序中等待任务?

转载 作者:行者123 更新时间:2023-11-30 23:20:25 24 4
gpt4 key购买 nike

private async void ProgressDialog_Opened(ContentDialog sender, ContentDialogOpenedEventArgs args)
{
ProgressDialog p = sender as ProgressDialog;
await DoCopyingAsync(p);
}

我知道在 async void 方法中等待时会发生不好的事情,那么我如何更改我的代码来避免这种情况?这不是“顶级事件处理程序”,等待是“允许的”,但它会在调用

后被触发
await progressDialog.ShowAsync();

最佳答案

我认为进度对话框不应该负责复制,复制不应该对进度对话框一无所知。

async void StartCopy_Click(object sender, RoutedEventArgs e)
{
var progressDialog = new ProgressDialog();
var progress = new Progress<int>(percent => progressDialog.Percent = percent);
Task copyTask = DoCopyingAsync(progress);
Task showProgressTask = progressDialog.ShowAsync();
await copyTask;
progressDialog.Hide();
await showProgressTask;
}

关于c# - 如何避免在不是 ‘top level’ 的事件处理程序中等待任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39774511/

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