C#-GUI消息队列(消息泵-并行或串行)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#-GUI消息队列(消息泵-并行或串行),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含883字,纯文字阅读大概需要2分钟。
内容图文
我似乎在任何地方都找不到答案.我不确定我是否会说出来.
发送给表单处理控件的消息是否彼此并行?
我总是给人一种印象,我们每个线程单元都有一个消息泵,而一个泵将提供与该线程相连的整个GUI.因此,如果您将钩子插入一个控件的wndproc并冻结线程(Thread.Sleep()),整个表单将冻结吗?
如果是这样,则this question似乎证明当特定消息到达子控件时,通过休眠,相邻控件处理了它的下一条消息.怎么样?
解决方法:
邮件严格按顺序处理.不要被Q A中的时间戳误导,它只是分数中没有足够的数字来表明消息实际上以微秒的间隔到达.消息处理程序非常快,这是正常的.
只有当您有多个线程时,代码才能并行运行.这对用户界面是有害的,大块代码从来都不是线程安全的.即使很小的块,也非常基本的.NET类(例如List<>不是.通过使用锁定,困难的方式以及只有小代码才能做到的事情,或者通过确保代码始终在一个特定线程上运行,您可以保持代码线程安全.
由于UI不是线程安全的,因此存在消息循环.它是producer-consumer problem的通用解决方案.操作系统和其他进程中的线程产生,UI线程消耗.
内容总结
以上是互联网集市为您收集整理的C#-GUI消息队列(消息泵-并行或串行)全部内容,希望文章能够帮你解决C#-GUI消息队列(消息泵-并行或串行)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。