我对所有关于并发的概念都相当新,但我发现我需要有并行绘图例程,原因有很多:
>我想分开绘制图形的不同部分(背景刷新的频率低于前景,保留在缓冲区中).
>我希望控制优先级(UI响应性优先于绘制复杂图形).
>我希望每帧绘图计算多线程.
>我想为复杂的缓冲区绘图程序提供取消功能.
然而,作为一个初学者,我的代码很快看起来像一团糟,重构或错误修复变得如此尴尬,我决定在做任何严肃的事情之前我需要更多地使用它.
所以,我想知道如何制作干净,易于保存的.NET多线程代码,这些代码在我第二天醒来后看到它时才有意义.我遇到的最大问题是构建应用程序,因此所有部分都以智能(而不是笨拙和hacky)方式相互交谈.
任何建议都是受欢迎的,但我喜欢我可以在空闲时间消化的来源(例如,不是500页并发论文)和C#/ VB.NET,直到最新版本(因为我看到有已经advances).基本上我想要一些直截了当的东西,所以我可以开始玩我的玩具项目的概念.
解决方法
但请注意,您可能会考虑将绘图单线程化.您应该尝试保持计算多线程,并在GUI线程上完成实际的绘制操作.
大多数绘图API要求所有实际绘图调用都发生在同一个同步上下文中.
话虽这么说,使用像ConcurrentQueue这样的新集合类可以简化这种类型的代码.尝试考虑许多线程(生产者)将“绘图操作”添加到共享的并发队列 – 并且一个线程(消费者)抓取操作并执行它们.
这为您提供了一个可合理扩展但相当简单的设计,您可以在其上构建.
原文地址:https://www.jb51.cc/csharp/92251.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。