<<SOS>>多线程求援!!!

问题描述

有个问题,要请教。情况是这样的:1)有一个表,其中存放了若干条网页网址信息。2)现在要从这个表中读出相关网页网址等信息后,交给下载模块去进行下载网页文件操作。3)下载的网页文件信息添加到一个listview中,并将网页内容保存到另外的一个表中。目前用单线程做没有问题,但是单线程速度过于慢了。现在想使用多线程来完成(或称为改造原程序)同样的功能,以提升从读取下载网页网址信息->下载网页->成功后添加到listview中->保存网页内容这一整个操作的速度。但由于没有用过多线程,找了些资料看了看,都不够全面,都是些简单的介绍,所以不知道如何下手。不知道您是否可以提供些帮助,或是给份相关的范例程序呢。还有刷新listview等相关提供程序进度信息的控件时,我最近做的一个是使用backgroundwork实现(但不是此项目),不知道在使用多线程后如何刷新诸如listview等控件。

解决方案

解决方案二:
多线程成的思想就是有任务需要并行,如果你想不出哪些任务需要并行,那你就不必使用多线程不知道你所谓的下载网页单线程过慢是什么意思,Http请求一般都是单线程的,当然你可以开多个线程,每个线程请求一个页面。这种情况下需要多线程是因为下载数据的任务需要时间,但不能因为下载数据就不处理界面的消息动作,也就是说至少下载数据与界面处理两种任务需要并行。线程同步中都是这样的:B线程要收到A线程的通知,那么必然有B会通过某个方法等待(阻塞),直到A线程给B线程这个通知B才能继续往下执行,但是通常不是只等某一个通知,而是等好几个通知,任意一个通知到达B就进行处理,处理完之后继续等待通知。如果B是主线程,那么等待通知一般是等待消息,调用的方法是GetMessage,它在没消息的时候就阻塞了,有消息B就拿出来处理(有可能是系统给的消息,也有可能是其他线程给的),处理完之后继续等待下一个消息,这就是所谓的消息循环。C#中有SynchronizationContext的Post和Send以及Control的BeginInvoke和Invoke来进行同步,这两个同步都是用消息的方式,Post和BeginInvoke是异步的,意味着不管目标线程是否执行完该方法,Post和BeginInvoke都会马上返回,因此他们一般用于无需返回执行结果的通知,Send和Invoke是同步的,意味着只有目标线程执行完才返回,所以可以拿到执行结果。SynchronizationContext用于各种线程都比较方便,而Control的一般只用于主线程。
解决方案三:
单CPU使用多线程的意义也不大。
解决方案四:
既然你用过backgroundwork,那么刷新当然写在完成时的回调方法里.

时间: 2024-09-20 12:18:57

<<SOS>>多线程求援!!!的相关文章

电子书-android文本阅读器中分页的问题 sos

问题描述 android文本阅读器中分页的问题 sos 想自己做个文本阅读器当做练习,现在遇到的问题是读取的电子书如何加载到view中. 1.全部读入并加载,但是文件较大时会很慢 2.分页加载,问题是如何确认每次加载的最大文字数?因为文件中会有换行.空格等 解决方案 现在电子书源码到处都是,可以下载一个看看http://code1.okbase.net/codefile/BookPageFactory.java_2014040626020_3.htm

windgb,sos,adplus,tinyget常用命令

在上一篇的译文中,主要讲解了Tess的debug系列概况以及debugger tools的安装和设置.在翻译下一篇文章之前,我打算先和大家讲解下windbg,sos,adplus和tinyget的一些常见命令.了解了这些以后,你将会更加容易的理解以后的文章. ASP.NET Debug系列之一:环境搭配 1.adplus 这个脚本工具是和debugger tools一起安装的.可以自动的帮你监视某个程序,并在你设定的条件下生成一个dump文件保存在debugger目录下.使用这些工具时,都需要将

mysql-<SOS!!!> Communications link failureons

问题描述 <SOS!!!> Communications link failureons 自己做的第一个信息类网站,第一次访问主页时能够正确显示,但过几分钟后刷新该页面是就会报错:错误类型如下:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 1649969 m

淘宝支付 优惠券实习-sos如何防止优惠券被刷

问题描述 sos如何防止优惠券被刷 商场每月会做一些优惠券活动,限制绑定手机+验证码领取(每个手机号只可领取一次),设置成这样还是会被瞬间刷光,京东 天猫是怎么处理这些问题呢?大家有什么好办法吗?

数据分析-新手weka问题,急SOS~~

问题描述 新手weka问题,急SOS~~ 没做过数据挖掘这方面,但是那边安排了个这方面的活,要求用weka做挖掘,现学了两天半吊子,特来求解各位大神. 问题1:现在遇到问题是挖掘内容大概150w条,在mysql中占400+M.当我用weka从数据库导入时weka就会死掉, 我把jvm内存调到1500M还是崩,再调大了就不允许.是不是和我机子内存有关系,加内存就能解决问题么,有没有别的解决方案,我用的机子内存4G 问题2:我想通过调用weka的api直接把聚类结果拿来直接传到前台做图展示,可是发现

大数据存储-SOS上百万的数据插入数据库问题

问题描述 SOS上百万的数据插入数据库问题 每天定时从FTP上下载一份上百万数据量的压缩文件到服务器,然后解压,再然后读取这批文件,一个文件可能就1KB,可能一个文件夹里有上百万个文件,怎样快速的读取这批文件的信息,然后插入数据库呢,读完一个文件要同时把这个文件备份到另一个目录下,同时原目录下这个文件也要删除,请问各位大神,有什方法可以快速的写入数据,有没有demo参考一下,本人是菜鸟中菜鸟来的! 解决方案 这个基本上选取一个你熟悉的脚本语言来做,就比较简单 比如python 你用urllib库

启动-笔记本电脑BIOS系统不知什么原因进不去了,SOS,SOS……

问题描述 笔记本电脑BIOS系统不知什么原因进不去了,SOS,SOS-- 按下F2后有please wait--字样,但是马上就到了进入系统的界面,进不了BIOS设置界面,笔记本系统是win8 64位的,支持UEFI启动,有ESP分区,系统装在固态硬盘里,拔掉所有外部设备,释放静电也进不去,怎么个情况啊,大神们,帮帮小虾米吧 解决方案 主板进 BIOS,与安装的是什么系统没有关系. 首先,你确认是按 F2 进入 BIOS?而不是 Del 或 F1 等其它按键进入 BIOS. 建议你在网上查一下你

c++-手机号码校验 正则表达式匹配有问题 C++11可以通过 android下匹配失败 SOS!

问题描述 手机号码校验 正则表达式匹配有问题 C++11可以通过 android下匹配失败 SOS! bool StringUtil::StringVerification(std::string src std::string regular){#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) regex pattern(regular.c_str()); if ( !regex_match( src pattern ) ) { return fals

mysql-MYSQL PROCEDURE 问题 急救 SOS 谢谢

问题描述 MYSQL PROCEDURE 问题 急救 SOS 谢谢 我把一个存储过程的创建语句复制下来,然后删了重新建立 ,结果一直报错,而且报的还是语法错误,死活没找到到底哪里出错,SOS ,谢谢谢谢 报错行为我加粗的那一行 [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax t