gpt4 book ai didi

c# - Task.Factory.StartNew 和 Application.Current.Dispatcher.Invoke

转载 作者:太空宇宙 更新时间:2023-11-03 13:01:21 24 4
gpt4 key购买 nike

给定这段代码:

Task.Factory.StartNew(() =>
{
Application.Current.Dispatcher.Invoke(() =>
{
//Code to run on UI thread
});
//Code to run on a background thread
}).

是否可以安全地假设“在后台线程上运行的代码”在“在 UI 线程上运行的代码”完成执行之前在任何情况下都不会到达?

最佳答案

当您启动 Task 时,它将作为工作线程运行,并且会阻塞直到 Invoke(...) 结束。当 Invoke(..) 完成后,它将在工作线程上继续。

“在 UI 线程上运行的代码”将首先运行,接下来是“在后台线程上运行的代码”。

然后您可以在工作线程中执行一些工作,例如读取文件、写入文件、在不阻塞主线程的情况下查询数据库,并且在需要时您可以通过 Invoke(...)

但是看看Async/Await ,它可以使异步操作和更新 UI 元素更容易理解。

关于c# - Task.Factory.StartNew 和 Application.Current.Dispatcher.Invoke,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32210594/

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