gpt4 book ai didi

wpf - 运行长任务而不卡住UI

转载 作者:行者123 更新时间:2023-12-04 05:33:13 24 4
gpt4 key购买 nike

我正在尝试在后台执行操作,而不卡住UI。

当然,我可以为此使用BackgroundWorker。

但是,我只想使用Task API来做到这一点。

我试过了:

async void OnTestLoaded(object sender, RoutedEventArgs e)
{
await LongOperation();
}
// It freezes the UI


async void OnTestLoaded(object sender, RoutedEventArgs e)
{
var task = Task.Run(()=> LongOperation());
task.Wait();
}


// It freezes the UI

那我应该回到BackgroundWorker吗?还是仅使用任务有解决方案?

最佳答案

你很亲密。

async void OnTestLoaded(object sender, RoutedEventArgs e)
{
await Task.Run(() => LongOperation());
}
async does not execute a method on a thread pool thread
Task.Run在线程池线程上执行操作,并返回代表该操作的 Task

如果在 Task.Wait方法中使用 async,则为 doing it wrong。您应该在 await方法中使用 async任务,切勿阻塞它们。

关于wpf - 运行长任务而不卡住UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10065000/

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