我遇到了LinqToTwitter 4.1的问题,其中打开用户流最终会导致程序内存使用失控。程序开始运行时不会发生这种情况,但仅在一段时间后,通常在一两天之后。
使用ANTS Memory Profiler我发现此参考链阻止收集System.Byte []。完整的分析器结果可以下载here。
代码:
private async Task<Streaming> TwitterSteam(string trackHashTags, string twitterUserIds)
{
var stream = (from strm in TwitterCtx.Streaming.WithCancellation(CloseStreamSource.Token)
where strm.Type == StreamingType.Filter &&
strm.Track == trackHashTags
&& strm.Follow == (string.IsNullOrEmpty(twitterUserIds) ? "41553192" : twitterUserIds)
select strm).StartAsync(async strm =>
{
string message = string.IsNullOrEmpty(strm.Content) ? "Keep-Alive" : strm.Content;
if (message == "Keep-Alive")
{
IsRunning = true;
}
else
{
JsonData data = JsonMapper.ToObject(message);
Status tweet = new Status(data);
LogClient.LogInfo("Received Tweet: " + tweet.Text, null, LogType.Info, null);
ConvertToMessage(tweet);
IsRunning = true;
}
}).Result.SingleOrDefault();
return stream;
}
任何人都可以提供有关为何发生这种情况以及如何防止这种情况的见解吗?