これで、最初の呼び出しで機能するコードができ、Facebook での最新の通知を RSS 経由で知ることができます。しかし、2 回目のポーリングを行うと、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(); を使用することもできました。