0

所以我有一段代码可以在第一次通话时工作,并且可以通过 RSS 告诉我我最近在 Facebook 上的通知。但是,当我第二次去轮询它时,它在创建 rssReader 对象之前就冻结了。

private string getLatest()
    {
        var req = (HttpWebRequest)WebRequest.Create(rssFeedURL);
        req.Method = "GET";
        req.UserAgent = "Fiddler";

        var rep = req.GetResponse();
        var rssReader = XmlTextReader.Create(rep.GetResponseStream());

        if(rssReader.ReadToFollowing("item"))
        {                
            rssReader.ReadToFollowing("title");
            return rssReader.ReadElementContentAsString();   
        }
        return latest;
    }

谁能告诉我这是为什么?(此代码几乎与其他有效的代码相同)

在这个函数中调用它:

public string alertFeed()
{
    string re = getLatest();
    if (re.Equals(latest))
            return null;
            latest = re;
            return "Facebook Notification, " + re;
    }
}

编辑:

这是固定代码,任何有兴趣的人:

    private string getLatest()
    {

        var req = (HttpWebRequest)WebRequest.Create(rssFeedURL);
        req.KeepAlive = false;
        req.Method = "GET";
        req.UserAgent = "Fiddler";
  --->  using (WebResponse rep = req.GetResponse())
        {
            var rssReader = XmlTextReader.Create(rep.GetResponseStream());

            if (rssReader.ReadToFollowing("item"))
            {
                rssReader.ReadToFollowing("title");
                return rssReader.ReadElementContentAsString();
            }
  --->  }
        return latest;
    }

指出的部分是我必须添加的,正如 Gratz 所指出的,我也可以使用 rep.Close();。

4

1 回答 1

0

可能是因为您没有关闭 WebResponse "rep"

rep.Close();
于 2013-03-04T08:44:17.847 回答