初学,呵呵,问个问题,我用webBrowser打开一个网页对里面的元素进行操作,因为网页内容很多,我就想让程序读到页面时候停几秒再运行后面的程序,我的代码是:
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (e.Url.ToString() == "http://XXX")
{
System.Threading.Timer myTime = new System.Threading.Timer(new TimerCallback(Edit), null, 3000, 0);
}
}private void Edit(object obj)
{
StreamReader getReader = new StreamReader(webBrowser1.DocumentStream, Encoding.GetEncoding(webBrowser1.Document.Encoding));
string s = getReader.ReadToEnd();
//在执行到上面的语句时候,会报错,说指定的转换无效
}
应该怎么办好?我如果去掉3秒等待,直接执行Edit是可以的。
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (e.Url.ToString() == "http://XXX")
{
System.Threading.Timer myTime = new System.Threading.Timer(new TimerCallback(Edit), null, 3000, 0);
}
}private void Edit(object obj)
{
StreamReader getReader = new StreamReader(webBrowser1.DocumentStream, Encoding.GetEncoding(webBrowser1.Document.Encoding));
string s = getReader.ReadToEnd();
//在执行到上面的语句时候,会报错,说指定的转换无效
}
应该怎么办好?我如果去掉3秒等待,直接执行Edit是可以的。
Timer timer1 = new System.Windows.Forms.Timer(this.components);
this.timer1.Interval = 3000;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
private void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (browser.ReadyState == WebBrowserReadyState.Complete)
timer1.Enabled=true;
} private void timer1_Tick(object sender, EventArgs e)
{
timer1.Enabled = false;
Edit();
}