c# - 如何使用 C# 检测 WPF 中 UI 线程何时启动和停止处理?

标签 c# .net wpf multithreading user-interface

在我的 WPF C# 应用程序中,我在处理事务时显示一个小圆圈动画,让用户知道应用程序正在“思考”,他们应该放松一下。这是一个单独的exe。因此,例如,当用户单击按钮来运行分析(可能需要 5-10 秒)时,我会启动显示动画的过程,当一切完成后,我会停止该过程。在此期间,新产生了子线程来处理后台任务。完成后,UI 将更新,由于数据网格复杂,这可能需要几秒钟的时间。

虽然这在技术上可行,但我宁愿以不同的方式处理它。我宁愿让应用程序自动检测线程何时工作并自动显示动画,当线程全部完成时,它停止显示动画。我可以轻松检测后台线程,但如何检测 UI 线程呢?我宁愿这样做,因为有几次我不小心错过了杀死应用程序,但处理完成后它仍在运行。这可以防止这种情况发生。

UI 线程启动和停止时是否会触发事件?如果没有,假设我在其中放置了一个每 1/2 秒触发一次的计时器,我是否可以进行调用来告诉我 UI 线程的状态?

谢谢

最佳答案

更好的方法是将处理移出 UI(例如使用 BackgroundWorker 并让后台工作人员将通知发布到 UI 线程(开始、进度更新、完成)。 p>

不要重新发明轮子并将处理逻辑移出 UI 线程。

关于c# - 如何使用 C# 检测 WPF 中 UI 线程何时启动和停止处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14260693/

相关文章:

c# - Azure Web App 无法从 smtp.office365.com 发送电子邮件

wpf - 刷新 ObjectDataProvider 时 View 丢失

c# - 从 ContextMenu 实现 "Rename"

c# - wpf TreeView 蓝调。我要选择一个项目

c# - 绑定(bind) Button.IsEnabled() 属性无法正常工作

c# - GetMember 是否应该返回封闭类型的抽象属性?

c# - 高优先级的自定义命令Windows服务

java - 在 C# 中验证在 Java 中签名的内容

.net - BinaryWriter.Write() 如何写字符串

c# - XNA 4.0 寻找房间算法问题