关于Backgroundworker的一个奇怪问题 楼上的大神,在为我在另一个Form中将会平凡的画图,如果在界面中点击过快的话会影响到界面的响应,所以我就做了第二个线程! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Control.CheckForIllegalCrossThreadCalls默认在调式的时候为true,就是因为在另一个线程对UI操作会导致问题,这样方便找到错误。UI是基于消息循环的单线程设计,不是你没写在主线程操作UI的代码,其它线程对UI操作就没有操作了。主线程在不断的处理消息,就算在其它线程发起UI操作,实际的画法也是在主线程处理WM_PAINT消息时完成的,而运行画法的代码时因为其他线程对UI的操作不一定完成,很可能控件内部的状态都不对。这只是一种问题,还有其他,所以不要在其它线程操作UI。 首先的问题是,为什么要连续点击画图按键?这不是常规的操作方式,一般都是其它线程生成或者获取数据,然后Invoke调度UI操作到主线程执行,人来控制开始和结束,没有让人不停点击来操作的。 我用.net自带的Chart控件试过,没有发现你所说的问题。如果绘图频繁到影响界面响应的话,我想你最好考虑一下降低频率,这种跨线程操作控件的方法并不可靠,看下MSDN里的说明:一般情况下,耗时的操作都在IO上,所以通常在新的线程里只做数据收集的工作,而界面的绘制仍旧是在主线程里完成。如果影响到界面响应,那可能是更新的频率过高,其实这样的频率人看了也不舒服,你想想,如果你的数据变动很大,那最后看到的就只有色块在屏幕上跳舞。 问题并不在BackgroundWork上面,而应该在你的设计方面,再仔细想想应该怎么做一次彻底改变吧。 永远不要写 CheckForIllegalCrossThreadCalls = false; 这种代码。 求一个正则,数字加冒号的 散分了 听课的时候思想老是想到了别的地方(上编程课听不懂) C#.NET的SESSION问题 请问:如何隐藏基类的方法!谢谢!! 一个文件读写的初级问题 To(xls):谢谢你,给分 高分!高分!,,,,,,,一段C到C#的转换。请问有错不。 大家来看看 这样写是一种什么语法 如何通过反射把dll的值取回来 VS2005中“目标平台”的意思是代码的运行平台还是编译打包后软件的运行平台? 跨线程调用问题
我用.net自带的Chart控件试过,没有发现你所说的问题。
如果绘图频繁到影响界面响应的话,我想你最好考虑一下降低频率,这种跨线程操作控件的方法并不可靠,看下MSDN里的说明:
一般情况下,耗时的操作都在IO上,所以通常在新的线程里只做数据收集的工作,而界面的绘制仍旧是在主线程里完成。如果影响到界面响应,那可能是更新的频率过高,其实这样的频率人看了也不舒服,你想想,如果你的数据变动很大,那最后看到的就只有色块在屏幕上跳舞。