string content=fuc("http://www.sina.com/index.html");
public string fuc(string str)
{
   //抓取
   return str  //返回抓取结果
}------------------------------------------------ 
这里怎样能做个处理,判断如果fuc函数,超过10秒,还没返回结果,那么就放弃抓取了,继续往下执行! 高人们,进来指点一下!多多给分!对了。这个
 WebRequest request = WebRequest.Create(Url);
               //声明一个HttpWebRequest请求
                 request.Timeout = 10000;
根本不管用!谁能给段简洁的代码呢?

解决方案 »

  1.   

    我真好在做这样一个东西,我的是winform,抓取部分的思路是
    Thread td;
    public void fuc(string str)
    {
       Getmess gm=new Getmess(str);
       webbrower wb=new Webbrower();
       wb.navi..;//设置wb的链接地址
       wb.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(this.WB_DocumentCompleted1); 
    //这一行注册
       td=new Thread(gm.main);
       td.set....//记不清楚了,设置为单线程。
       td.start();
       sleep(10000);//你说的,10秒。在这10秒内,上边开启的线程去抓取。
       td.Abort();//杀死线程
       //抓取
    }
    void WB_DocumentCompleted1(......这里记不住)
    {
      //如果页面10秒内完成就会执行这里的代码
    }
    我的Getmess类有一个webbrower类
      

  2.   

    sleep(10000);//你说的,10秒。在这10秒内,上边开启的线程去抓取。
     你这个是会阻塞主线程的吧!?
      

  3.   

     public class myclass 
        { 
            private void Do() 
            { 
                FucPara para = new FucPara(@"http://www.sina.com/index.html"); 
                ParameterizedThreadStart pth = new ParameterizedThreadStart(fuc); 
                Thread th = new Thread(pth); 
                th.Start(para);             if (th.Join(10000)) 
                { 
                    MessageBox.Show(para.StrOut); 
                } 
                else 
                { 
                    th.Abort(); 
                    MessageBox.Show("Error"); 
                } 
            }         public void fuc(object para) 
            { 
                FucPara parax = para as FucPara; 
                Thread.Sleep(11000); 
                //抓取             parax.StrOut = parax.StrIn;  //返回抓取结果 
            }     }     public class FucPara 
        { 
            public FucPara(string strin) 
            { 
                StrIn = strin; 
            } 
            public string StrIn { get; private set; } 
            public string StrOut { get; set; } 
        } 
      

  4.   

    补充一下webbrower可以在外部申明好。完成后的处理事件也在外部做好。线程中只要给webbrower设置一个链接就可以了。我测试过的。弄了2天了。今天才搞定的
    我的是程序运行以后,开启一个线程,该线程通过帐号密码登录某网站,然后用死循环检测页面内容。