我有一个应用程序需要等待后台工作人员完成才能继续。后台工作人员负责将一些值写入初始化它的 USB 设备。后台工作程序的问题是我的主程序可以在后台工作程序完成初始化之前尝试访问 USB 设备。
当后台工作人员工作时,UI 线程会显示带有动画进度条的“请稍候”。进度条不反射(reflect)后台 worker 的进度,它只是“旋转”。
我读过几个问题说不要使用后台 worker ,因为我真的不希望它异步运行(这是真的),但是,如果不使用后台 worker ,我的“请稍候”对话框会阻塞并且不显示动画。我也读了很多告诉我只使用一个 UI 线程,然后支持使用后台工作程序。
我也曾尝试将“请稍候”微调器放在单独的线程中,但这会带来复杂性和奇怪的竞争条件,即“请稍候”窗口会在打开之前尝试关闭。
解决这个问题的正确方法是什么?
最佳答案
这正是 BackgroundWorker
的设计目的。虽然还有其他方法可以实现此目的,但您正在做的就很好。
关于c# - 等待后台 worker 完成而不阻塞 UI 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13254716/