c#上位机开发在程序运行时老是卡死?
请教一下搞过c#的大虾们。我最近用c#做一个上位机的程序。从串口收数据并在上位机中用chart控件来画出实时曲线。
但是当有多个chart控件同时运行时,整个程序就会卡死不动,只能在任务管理器里杀掉。
我刚开始学c#,没用到多线程,是不是跟这个有关? 这个肯定要用多线程的,而且实时绘图也有一定的技巧。 回复【1楼】youkebing
-----------------------------------------------------------------------
我用的是vs2010,.NET Frame 4.0里边有chart控件。
实时曲线代码部分大概是这样(参考dundas里面的例子)
// remove all points from the source series older than 1.5 minutes.
double removeBefore = timeStamp.AddSeconds( (double)(90) * ( -1 )).ToOADate();
//remove oldest values to maintain a constant number of data points
while ( ptSeries.Points.XValue < removeBefore )
{
ptSeries.Points.RemoveAt(0);
}
chart1.ChartAreas.AxisX.Minimum = ptSeries.Points.XValue;
chart1.ChartAreas.AxisX.Maximum = DateTime.FromOADate(ptSeries.Points.XValue).AddMinutes(2).ToOADate(); C#适合WIN7 楼上胡扯淡
C#出来的时候WIN7还没出生呢
楼主你用多线程了吗?委托,界面卡死和线程有关,和XP,WIN7没关系. 你可以看看Arction LightningChart:
http://www.arction.com/benchmark
根据你的需求Basic版本应该就能满足,这个是Free的:
http://www.arction.com/products_lc_basic
MS Chart据我的使用经验,适合生成静态图表。 都说WIN7内核提供对C#的支持,其实我认为WIN7也就是安装了.NET Framework而已,有些软件在WIN7上一样需要安装高版本的.NET Framework。因此,个人感觉就是个噱头。 回复【6楼】WithSword倚剑
-----------------------------------------------------------------------
Windows NT 内核好歹是混合内核,是不会带Framework的。 如果你自己用的话还可以 要是给用户的话,你用.NET 4.0你会死的很惨,很多人连2.0都没装 我现在只用2.0,安装体积小点,3.5以后的体积太大了。 C#的前台界面是STA单线程的,你要是有好多event导致事件更新过于频繁,就可能会使得界面卡死。
最好吧处理数据和显示数据分开到不同的线程上。另外你要让出来点时间让前台UI线程能够刷新。 回复【8楼】elecfun熊
-----------------------------------------------------------------------
我还是学生。。。最近要参加一个比赛用的,才看了三四天C#,线程那些高深的还不是很懂。。 回复【10楼】arda
-----------------------------------------------------------------------
嗯,我明天试试看多线程。。。 你现在还没搞清楚是什么原因造成的假死,用多线程还是白搭的
检查一下串口数据的量,Chart刷新的时间,是由于Evnet太多造成的卡死,还是Chart来不及刷新造成的假死 今天用了多线程,顺利解决了。
其实我的数据量很小,每次就5个字节。不过每隔几秒就发一次。
我用了4个chart,还有别的label,textbox也要随数据变化。
应该是event太多了吧,我给每个chart都分了一个线程,就好了。
之前开两个都经常卡,现在4个全开都很流畅。
多谢大家了。 用四个chart干嘛,用一个就可以了吧,多用几个chartArea啊
页:
[1]