我想象了另一种我非常自豪的方式:如果多线程仅允许 IHM 为进度条设置动画,如果用户不应该与确保进程的 ihm 交互,或者只是没有时间开发p多线程,你不能让你的应用程序在没有反馈的情况下冻结:
您可以开发一个加载器,该加载器启动到另一个 STA 线程,该线程创建另一个窗口并在冻结窗口的中间显示此加载器。
这是我撰写的一篇文章和此类解决方案的实现的帖子:
http://charly-studio.com/blog/a-loader-for-wpf-long-ui-process/
这是我使用组件的方式:
private void MainWindow_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
// Long UI process context
using (new LongUIProcessContext("Wait while loading..."))
{
Thread.Sleep(2000);
// Sub long ui process context
using (new LongUIProcessContext("Wait while loading 2..."))
{
Thread.Sleep(2000);
}
// Another sub long ui process context
using (new LongUIProcessContext("Wait while loading 3..."))
{
Thread.Sleep(2000);
}
}
}
这是我建议的替补席的样子:
这是我制作的工作台的直接链接,您可以在其中找到组件:
bench 解决方案直接下载