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

本文探讨了一个多线程程序中,原本预期会影响UI线程的操作实际上并未造成卡顿的问题。作者通过创建控制台程序并逐步删除代码进行测试,发现问题并非WebClient引起,而在于大量数据导入。减少数据量后,程序运行显著改善,揭示了数据量对程序性能的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最明显的问题就是UI线程会卡但不会卡死,但绝对没有操作UI线程
用DownloadString几乎不卡,用UploadData很容易卡
如果UploadData操作所使用的时间短的话那也不是多卡

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

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


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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值