2013-07-26 280 views
0

我想下载超时时间= 10秒的字符串。这段代码永远到了最后,我不明白为什么。C#为什么DownloadStringAsync不返回结果

    wc.DownloadStringCompleted += (ender,args)=> 
        { 
         res = args.Result; 
         var cook = Regex.Matches(wc.ResponseHeaders.ToString(), "Set\\-Cookie:\\s*([\\w\\-_\\.]+\\s*=\\s*[^;]+)", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline); 
         foreach (Match val in cook) 
          cookies += val.Groups[1].Value.Trim() + "; "; 
        }; 
        wc.DownloadStringAsync(new System.Uri(url)); 

        int msec = 0; 
        while (String.IsNullOrEmpty(res)) 
        { 
         Thread.Sleep(1); 
         ++msec; 
         if (msec >= 10000) 
         { 
          lastError = "TimeOut"; 
          goto theEnd; 
         } 
        } 
        return res; 

回答

0

试试这个,如果你正在使用或可以使用.NET 4.5。

var res = wc.DownloadStringAsync(new System.Uri(url)).Result; 

// Do whatever work you wanted to do on the result. 
var cook = Regex.Matches(wc.ResponseHeaders.ToString(), "Set\\-Cookie:\\s*([\\w\\-_\\.]+\\s*=\\s*[^;]+)", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline); 
foreach (Match val in cook) 
    cookies += val.Groups[1].Value.Trim() + "; "; 
return res; 
+1

downloadStringAsync无效我以为... – ForeverLearning

相关问题