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

来源:互联网 发布:反馈网络的负载效应 编辑:程序博客网 时间:2024/05/27 09:47
最明显的问题就是UI线程会卡但不会卡死,但绝对没有操作UI线程
用DownloadString几乎不卡,用UploadData很容易卡
如果UploadData操作所使用的时间短的话那也不是多卡

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

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


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

我新建了控制台程序添加了一个Form窗口,100线程UploadData一点都不卡,跑得飞快,这跟设想完全不一样,设想中应该是会卡才对的
然后又从原来的代码中一句一句删,代码都快删完了照样还是卡
偶然的机会,因为程序启动不能立即点击“开始”,要导入数据才能开始,后来为了方便测试就让开始可点击,然后再测试,奇迹当生了
不导入数据直接点击开始,尼玛不说一点都不卡,还是有那么一点的,但跟之前那真是差距太大了
这个时候还没怀疑到罪魁祸首,还以为是List<T>造成的,我导入数据用的List<T>,毕竟这玩意不是线程安全的,换成Queue照样不行
然后才怀疑到了尼玛是数据导入太多了`````50万条数据
我只导入几万条数据,一下子就不卡了```

0 0