高分请教关于winform中webBrowser实现多线程问题

yg198452 2008-04-10 11:50:49
由于代码量较多,就不便贴上来显示了.是这样的,在做一个系统,进入主窗体后要实时抓取自定义网络地址上分析下来的数据进数据库然后显示,由于该网络地址上的数据是30秒后刷新一次数据.那么我就得设置Timer每30秒后执行响应事件抓取一次数据进库.库里只留当前30秒内最新的数据. 我的思路是加载主窗体的时候第一次抓取,Timer等待30秒后执行事件删除之前抓取的数据然后又重新循环的去抓来进库显示.

问题: 一二步没问题能够正常通过.当30秒后Timer去执行再次抓取数据的时候webBrowser出错.因为这个控件是单线程的,在网上查了下资料,有说用数组的,有说用委托的.但没有个明确的解决方案与例子. 希望有解决办法的朋友给予帮助,最好能有个例子与注释,不胜感激!!!
...全文
468 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2010-06-22
  • 打赏
  • 举报
回复
怎么感觉这种方法里,
WebBrowser 控件还是在主线程里建立的啊!
jinjazz 2008-04-10
  • 打赏
  • 举报
回复
public partial class Form1 : Form
{

private void button1_Click(object sender, EventArgs e)
{
System.Threading.Thread s = new System.Threading.Thread(new System.Threading.ThreadStart(test));
s.ApartmentState = System.Threading.ApartmentState.STA;
s.Start();
}

public void test()
{
this.Invoke(new EventHandler(this.invokeTest));
}
public void invokeTest(object sender,EventArgs e)
{
System.Windows.Forms.WebBrowser wb = new WebBrowser();
this.Controls.Add(wb);
}
public Form1()
{
InitializeComponent();
}
}



原因参考
http://blog.csdn.net/jinjazz/archive/2007/11/29/1907240.aspx
yg198452 2008-04-10
  • 打赏
  • 举报
回复
问题已经解决了,谢谢你jinjazz
yg198452 2008-04-10
  • 打赏
  • 举报
回复
可不可以不触发事件让委托自行处理呢?

110,529

社区成员

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

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

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