日期:2014-05-17  浏览次数:20712 次

GDI+绘图 c#
操作过程:
1、从硬件中获取数据 解析 存入一个集合中(现在有三种数据,分别存入三个集合中)
2、开三个线程 分别从各个相应的集合中获取数据绘图(绘制三道波形)

出现问题的地方:
经过排除,问题出现在 drawimage()方法上

问题描述:
如果我只绘制一导波形,显示效果还是能接受的,但是,当我同时绘制两道波形时(开启两个线程),两道波形的绘制速度都会降下来很多

问题:
我想问的是,我是分三个线程分别各干各的事 为什么会受影响呢?该怎样处理好呢?



新年第一次发帖,祝各位新年快乐!

------解决方案--------------------
咱来帮顶一下     
------解决方案--------------------
开的线程数跟你的CPU好像也有关系的吧。照你这么说,其实是你画波形耗了很多时间,应该是去优化这方法。
------解决方案--------------------
画图几乎不耗费cpu。画图只要ui线程就行了。需要开线程的是你的计算。
------解决方案--------------------
上图
------解决方案--------------------
那得看绘制波形的工作量大不大,如果计算量很大,不管你分几个线程,CPU处理也是要时间的
------解决方案--------------------
我试过画600个点的波形,共三张图,明显比画一张300个点的图慢不少
------解决方案--------------------
用WPF啊。都交给GPU在弄了
------解决方案--------------------
线程也是程序,所以线程需要占用内存,线程越多占用内存也越多; 多线程需要协调和管理,所以需要CPU时间跟踪线程; 线程之间对共享资源的访问会相互影响,必须解决竞用共享资源的问题; 线程太多会导致控制太复杂,最终可能造成很多Bug。