所以我有一段代码可以在第一次通话时工作,并且可以通过 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();。