【发布时间】:2017-08-28 08:48:41
【问题描述】:
我正在创建一个窗口以在我的 MainWindow 上显示当前正在执行的任务。
我想做的是这样的:
Window progressDialog = new ProgressDialog();
using(progressDialog .ShowDialog())
{
//Perform some tasks and Update UI on progressDialog
} // Close/Dispose the progressdialog by itself
显然ShowDialog() 阻止了执行,所以我不能做某事。在 MainWindow 上,而另一个是 shwon。
我明确需要的东西:
- 将该/任何
Dialog显示为真正的对话框(仅TopMost不是选项)- 我想阻止用户做某事。加载时
-
using会非常好,因为它易于使用并且可以处理长时间运行的任务
编辑:
关于我的想法的详细信息:
- 用户点击“刷新”
- 已创建新的“状态/进度-更新”
- 将 StatusUpdate 传递给 ProgressWindow(orange)(如果可能,我们从
using获取该窗口) - 如果有 ProgressWindow 的活动实例,则将 StatusUpdate 添加到其集合中 - 否则显示新窗口
- 在 EndOfUsing CloseWindow() 结束时
例如“刷新”可以包含以下操作:
- 连接数据库
- 查询数据
- 显示数据
我想在我的进度窗口中为每个项目添加一个条目。
这可能吗? - 我对替代品持开放态度:P
【问题讨论】:
-
为什么在调用 ShowDialog 方法之前不启动任务?
-
假设我的进度窗口包含一个 ListView,显示每个任务的进度条。 1 完成后,我想开始下一个,更新窗口并将其添加到我的 ListView。 ShowDialog() 将阻止我开始另一个任务
-
这不是重复的。 @Felix D. 专门询问是否可以使用
using模式在 UI 线程上进行计算(与链接的问题不同,它要求对进度窗口提供一般指导)
标签: c# wpf multithreading window