您的位置:首页 > 产品设计 > UI/UE

为什么WebClient在多线程中的操作会影响到UI线程(标题党)

2013-12-20 13:46 369 查看
最明显的问题就是UI线程会卡但不会卡死,但绝对没有操作UI线程

用DownloadString几乎不卡,用UploadData很容易卡

如果UploadData操作所使用的时间短的话那也不是多卡

但问题是为什么多线程的操作会影响到主线程呢?

好吧,标题党来了,下面的内容几乎跟WebClient无关了

几经周折,终于找到最根本的原因了


我新建了控制台程序添加了一个Form窗口,100线程UploadData一点都不卡,跑得飞快,这跟设想完全不一样,设想中应该是会卡才对的


然后又从原来的代码中一句一句删,代码都快删完了照样还是卡


偶然的机会,因为程序启动不能立即点击“开始”,要导入数据才能开始,后来为了方便测试就让开始可点击,然后再测试,奇迹当生了


不导入数据直接点击开始,尼玛不说一点都不卡,还是有那么一点的,但跟之前那真是差距太大了


这个时候还没怀疑到罪魁祸首,还以为是List<T>造成的,我导入数据用的List<T>,毕竟这玩意不是线程安全的,换成Queue照样不行


然后才怀疑到了尼玛是数据导入太多了`````50万条数据


我只导入几万条数据,一下子就不卡了```
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: