首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF应用程序中的自定义跟踪程序冻结GUI

问WPF应用程序中的自定义跟踪程序冻结GUI
EN

Stack Overflow用户
提问于 2011-05-25 13:38:28
回答 1查看 655关注 0票数 0

完全重写了这个问题,因为我现在有了更多关于正在发生的事情的信息。

我有一个自定义的customtracelistener,它重写writeline方法,将字符串添加到自定义的可观察集合中。此集合类将所有通知事件调度到UI线程,以允许其他线程对其进行更新,同时仍允许WPF数据绑定。

我有一个包含列表框的用户控件。listbox将跟踪侦听器中的可观察集合绑定到它的itemssource。

在应用程序启动时,我设置了windows/usercontrol/viewmodel,并显示了窗口。然后,我启动一个工作线程,该线程运行应用程序所需的一些后端进程。如果后台线程在UI线程完成所有用户控件设置和数据绑定之前执行Trace.WriteLine,我的应用程序就会死锁。

通过在UI线程中添加睡眠和其他随机长时间运行的任务和/或延迟启动工作线程以使UI线程有时间完成,我已经在某种程度上合理地证明了这种竞争条件。

我现在考虑实现的解决方案是创建一个AppSetupCompleted方法,该方法启动所有后端进程的工作线程,并将其发送到具有后台优先级的Dispatcher。从理论上讲,这是否应该延迟工作线程,直到成功设置WPF控件和视图模型的所有绑定?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-25 16:27:15

听起来像是死锁或活锁...假设死锁(应用程序冻结时cpu较低),将调试器附加到应用程序并中断它。查看线程(UI和您从中调用Trace.WriteLine的那个)的调用堆栈,以了解它们被锁定的位置。

如果您不知道这是阻塞,请在您的问题中添加调用堆栈,它可能会帮助我们回答您的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6119978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档