vb.net 多线程获取网页内容

数组SUrl()保存了100个网页的网址,我想通过多线程的方式同时读取这100个网页的内容,保存在数组SResult()中,不考虑带宽问题。求代码,求思路。线程过程中参数... 数组SUrl()保存了100个网页的网址,我想通过多线程的方式同时读取这100个网页的内容,保存在数组SResult()中,不考虑带宽问题。
求代码,求思路。
线程过程中 参数传递、线程计算的返回值 怎么解决?只能使用public变量吗?有没有更有效的方法?
==============================================================
回复: endlesspark ,你的函数主要是用来获取网页文件的吧?难点在于如何给线程过程传递参数,并且获得线程过程的返回值。而且,vb.net源码最好。。。。还是要感谢你,但你的答案不是我想要的。
期待下一个答案。
展开
 我来答
endlesspark
2011-01-24 · 超过19用户采纳过TA的回答
知道答主
回答量:133
采纳率:0%
帮助的人:99.3万
展开全部
public static string getXmlFile(String url, String paramList,string referer)
{
HttpWebResponse res = null;
string strResult = " ";

try
{

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "GET ";
req.KeepAlive = true;
req.Referer=referer;
//CookieContainer cookieCon = new CookieContainer();
//req.CookieContainer = cookieCon;
//req.CookieContainer.SetCookies(new Uri(url),cookieheader);
StringBuilder UrlEncoded = new StringBuilder();
res = (HttpWebResponse)req.GetResponse();
Stream ReceiveStream = res.GetResponseStream();
Encoding encode = System.Text.Encoding.GetEncoding( "gb2312 ");
StreamReader sr = new StreamReader( ReceiveStream, encode );
Char[] read = new Char[256];
int count = sr.Read( read, 0, 256 );
while (count > 0)
{
String str = new String(read, 0, count);
strResult += str;
count = sr.Read(read, 0, 256);
}
}
catch(Exception e)
{
strResult = e.ToString();
}
finally
{
if ( res != null )
{
res.Close();
}
}

return strResult;
}

多线程里调用就行了 费了好长时间才弄出来 我调试过了 能行 如果对你有用就给分吧
notpunk
2011-01-22 · TA获得超过1628个赞
知道小有建树答主
回答量:339
采纳率:0%
帮助的人:145万
展开全部
1、建立100个线程,给这些线程的pubic变量i 赋值0~99,则线程在SUrl(i)中取地址,往SResult(i)中存结果。
2、循环sleep(100); 和检测结果是否全部得到,如果全部得到则返回程序。

2、每个线程完成后向程序发送完成消息,其中表明自己的i 值。消息处理函数如果发现有线程没完成则退出,如果都完成了则继续进行下面的工作。(当然,这样就不是在一个函数里完成全部功能了)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
加菲带你看电影
高粉答主

推荐于2018-03-29 · 繁杂信息太多,你要学会辨别
知道大有可为答主
回答量:5.2万
采纳率:50%
帮助的人:4648万
展开全部
相关代码如下:
1、相关代码如下:
Public Function getHtmlStr(strUrl As String) '获取远程网页源码
On Error Resume Next
Dim XmlHttp As Object, stime, ntime
Set XmlHttp = CreateObject("Microsoft.XMLHTTP")
XmlHttp.open "GET", strUrl, True
XmlHttp.send
stime = Now '获取当前时间
While XmlHttp.ReadyState <> 4
DoEvents
ntime = Now '获取循环时间
If DateDiff("s", stime, ntime) > 3 Then getHtmlStr = "": Exit Function
Wend
getHtmlStr = StrConv(XmlHttp.responseBody, vbUnicode)
Set XmlHttp = Nothing
End Function
2、代码使用:在窗体代码相应位置写如下代码
dim a as string
a=getHtmlStr("要获取的网站网址url")
上面a取得的值就是我们要的结果。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
苏察哈尔小贝勒
2011-01-23
知道答主
回答量:37
采纳率:0%
帮助的人:0
展开全部
补充一楼,1.传递参数可以用数组赋值保存在内存中,2.多线程我也不太会,3.你可以封装成类啊,把方向抽象出来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式