运行线程应用程序后,无法在所有浏览器中浏览到所有站点

时间:2011-04-05 14:03:01

标签: c# multithreading

我有一个奇怪的问题,我不确定它是从哪里来的。 我昨晚开始申请时就开始了。

我有以下代码:

DateTime startTime = DateTime.Now;
WebRequest req = (WebRequest)HttpWebRequest.Create("http://" + server + url + action);
WebResponse res = req.GetResponse();
try
{
    using (StreamReader reader = new StreamReader(res.GetResponseStream()))
    {
        string response = reader.ReadToEnd();
        TestInfo.CheckMsg retMsg;

        // individual Test
        retMsg = indFunc(req.RequestUri.ToString(), response);
        printMessage(retMsg, req, res, startTime);

        if (retMsg.SeverityLevel > TestInfo.CheckMsg.Severity.Warning)
            return;

        // group Test
        retMsg = groupFunc(relatedGroup, req.RequestUri.ToString(), response);
        printMessage(retMsg, req, res, startTime);

        if (retMsg.SeverityLevel > TestInfo.CheckMsg.Severity.Warning)
            return;

        // common Test
        retMsg = commonFunc(req.RequestUri.ToString(), response);
        printMessage(retMsg, req, res, startTime);

        if (retMsg.SeverityLevel > TestInfo.CheckMsg.Severity.Warning)
            return;

        reader.Close();
    };
}
catch (Exception e)
{
    Console.WriteLine("EXCEPTION WAS THROWN!!!!! " + e.Message);
}
finally
{
    res.Close();
}

此函数在多个线程上运行。 经过多次应用程序调试后,此代码无法连接声称已关闭的UNDERLYING CONNECTION。 当我试图在所有浏览器中浏览我的计算机(WIN XP)到所有网站时,我得到空白页面或者在chrome中我得到服务器的响应是空的。

当其他TCP连接工作时,Http只会被搞砸!

所以我猜问题可能出在我的代码中(也许某些东西没有发布???)

让我知道您对代码的看法。

感谢

1 个答案:

答案 0 :(得分:1)

我确实看到错误的一件事是你需要移动

 WebResponse res = req.GetResponse();

进入你的try块bc,它可以抛出异常(MSDN)。我还要添加一个空检查:

 if(res != null){
   res.Close()
 }