WebBrowser 请教一个相当难的问题·····

bugttp 2011-02-15 03:01:44
在一个新线程里执行:


for(int i=0;i<100;i++)
{
string url="http://www.123.com?s="+i;
WebBrowser.Navigate(url);
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
//(怎么样判断?WebBrowser.ReadyState != WebBrowserReadyState.Complete 会出现异常“指定的转换无效”)
{
Application.DoEvents();
};
}


我这里一定要用WebBrowser.ReadyState != WebBrowserReadyState.Complete判断,请达人给代码啊
...全文
348 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
超银 2011-02-16
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 jaylongli 的回复:]
WebBrowser.Navigate(url);
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
我只知道 这这两个对象不一样
[/Quote]
我倒觉得是否是这个原因啊?大意的结果
。不过奉劝不要在用户线程中使用webBrowser,曾今付出过惨痛的代价。
xingyuebuyu 2011-02-16
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{


}

void work(object obj)
{
ISynchronizeInvoke isi = (ISynchronizeInvoke)obj;
isi.Invoke(new mywork(working), new object[] { "http://www.baidu.com" });
}

void working(string url)
{
for (int i = 0; i < 1; i++)
{
//string url = "http://www.123.com?s=" + i;
//string url = "http://www.baidu.com";

webBrowser1.Navigate(url);
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
//(怎么样判断?WebBrowser.ReadyState != WebBrowserReadyState.Complete 会出现异常“指定的转换无效”)
{
Application.DoEvents();
};
}
}

delegate void mywork(string url);

private void button1_Click(object sender, EventArgs e)
{
ISynchronizeInvoke isi = this;
System.Threading.Thread td = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(work));
td.Start(isi);
}

}
}



自定义委托,决定参数类型,数量
  • 打赏
  • 举报
回复
webbrowser这种东西,不去支持它。
加油馒头 2011-02-15
  • 打赏
  • 举报
回复
WebBrowser.Navigate(url);
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
我只知道 这这两个对象不一样
xingyuebuyu 2011-02-15
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{


}

void work(object obj)
{
ISynchronizeInvoke isi = (ISynchronizeInvoke)obj;
isi.Invoke(new MethodInvoker(working), null);
}

void working()
{
for (int i = 0; i < 1; i++)
{
//string url = "http://www.123.com?s=" + i;
string url = "http://www.baidu.com" ;

webBrowser1.Navigate(url);
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
//(怎么样判断?WebBrowser.ReadyState != WebBrowserReadyState.Complete 会出现异常“指定的转换无效”)
{
Application.DoEvents();
};
}
}

private void button1_Click(object sender, EventArgs e)
{
ISynchronizeInvoke isi = this;
System.Threading.Thread td = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(work));
td.Start(isi);
}
}
}
yalan 2011-02-15
  • 打赏
  • 举报
回复
我也还不明白LZ要实现什么呢

请先说明你想实现什么功能,然后才能看代码呢
孟子E章 2011-02-15
  • 打赏
  • 举报
回复
你是要实现什么功能吧
bugttp 2011-02-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wuyq11 的回复:]

new Thread(() =>
{
new WebClient().DownloadFile("", path);
}).Start();
}
[/Quote]

达人解释一下行吗??
wuyq11 2011-02-15
  • 打赏
  • 举报
回复
new Thread(() =>
{
new WebClient().DownloadFile("", path);
}).Start();
}
bugttp 2011-02-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 bloodish 的回复:]

在线程里为什么要用WebBrowser?
这种判断,没有一定的事情:

我这里一定要用WebBrowser.ReadyState != WebBrowserReadyState.Complete

建议使用WebRequest

C# code

WebRequest wr = WebRequest.Create("www.123.com");
……
[/Quote]

这种方式已经使用的了,现在就是要加一个使用WebBrowser的。
bloodish 2011-02-15
  • 打赏
  • 举报
回复
在线程里为什么要用WebBrowser?
这种判断,没有一定的事情:

我这里一定要用WebBrowser.ReadyState != WebBrowserReadyState.Complete

建议使用WebRequest


WebRequest wr = WebRequest.Create("www.123.com");
HttpWebResponse resp = (HttpWebResponse)wr.GetResponse();
//...
bugttp 2011-02-15
  • 打赏
  • 举报
回复
是的,Control.Invoke,,看了好几个类似的问题,没弄懂。
bdmh 2011-02-15
  • 打赏
  • 举报
回复
原因可能是你在线程中使用的缘故

[jiangsheng]
You can not access a Windows Form control in a worker thread. You can only marshal the call back to the UI using Control.Invoke.
bugttp 2011-02-15
  • 打赏
  • 举报
回复
达人们啊,整了好久了,菜鸟我实在解决不了啊,,,,请赐代码吧
zlkingdom 2011-02-15
  • 打赏
  • 举报
回复
能用 try catch 解决吗?
孟子E章 2011-02-15
  • 打赏
  • 举报
回复
你可以参见
http://www.dreamincode.net/forums/topic/185476-c%23-problem-with-webbrowserreadystate/
的介绍
孟子E章 2011-02-15
  • 打赏
  • 举报
回复
WebBrowser.Navigate(url);
or
webBrowser1.Navigate(url);
???

110,552

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧