【发布时间】:2012-11-06 15:57:05
【问题描述】:
我有一个应用程序需要等待后台工作人员完成才能继续。后台工作人员负责将一些值写入初始化它的 USB 设备。后台工作者的问题是我的主程序可以在后台工作者完成初始化之前尝试访问USB设备。
当后台工作人员工作时,UI 线程会显示“请稍候”并带有动画进度条。进度条不反映后台工作人员的距离,它只是“旋转”。
我已经阅读了一些关于不要使用后台工作人员的问题,因为我真的不希望它异步运行(这是真的),但是,如果不使用后台工作人员,我的“请稍候”对话框块并且不显示动画。我还阅读了很多内容,告诉我只使用一个 UI 线程,然后支持使用后台工作线程。
我还尝试将“请稍候”微调器放在单独的线程中,但这会带来复杂性和奇怪的竞争条件,“请稍候”窗口会在打开之前尝试关闭。
解决这个问题的正确方法是什么?
【问题讨论】:
-
您用来启动应用程序的脚本是什么?
-
你所做的对我来说似乎是正确的选择。异步工作有什么问题?我们正在进入一个异步计算的世界。不要害怕(并使用血统库)
-
@SteveB 除了导致脚本等待运行之外,我最终没有更改任何内容。我不介意异步调用,但查找和修复竞态条件可能有点挑战
标签: c# multithreading backgroundworker