【发布时间】:2010-07-24 23:51:17
【问题描述】:
(编辑:澄清一下,我的主要目标是并发,但不一定适用于多核机器)
我对并发的所有概念都很陌生,但我发现我需要有并行绘图例程,原因有很多:
- 我想分别绘制图形的不同部分(背景刷新频率低于前景,保留在缓冲区中)。
- 我想要控制优先级(UI 响应比绘制复杂图形更优先)。
- 我想要多线程的每帧绘图计算。
- 我想为复杂的缓冲区绘制例程提供取消功能。
但是,作为一个初学者,我的代码很快就变得一团糟,重构或错误修复变得如此尴尬,以至于我决定在做任何严肃的事情之前我需要更多地使用它。
所以,我想知道如何编写干净、易于维护的 .NET 多线程代码,当我在第二天醒来后查看它时才有意义。我遇到的最大问题是构建应用程序,以便所有部分以一种智能(而不是笨拙和笨拙)的方式相互交流。
欢迎提出任何建议,但我更喜欢可以在空闲时间消化的资源(例如,不是 500 多页关于并发的论文)和 C#/VB.NET,直到最新版本(因为我看到有advances)。基本上,我想要一些直截了当的东西,这样我就可以开始玩我的玩具项目中的概念了。
【问题讨论】:
-
更详细地描述您的需求将有助于人们回答您的问题。您想以多线程方式绘制整个 UI?您是否只有一个应该是多线程的控件?您可能会以消耗绘图层的线程池结束。
-
对不起,我主要关心的是以这种并发方式构建这样的代码(通常是同步的)。在这种情况下,它是关于一个可以将其绘图拆分为两个或三个线程的单个控件,但让我难以理解的是如何将并发应用于通常在 Paint 事件上启动和完成的事物。
标签: c# vb.net multithreading concurrency parallel-processing