【问题标题】:NullReferenceException was unhandled in C# Timer TweetSharpNullReferenceException 在 C# Timer TweetSharp 中未处理
【发布时间】:2014-01-11 12:58:16
【问题描述】:

我正在开发一个 twitter 项目,该项目允许用户使用 C# 自动向提到的推文发送推文。我将 TweetSharp 与 C# 一起使用。问题是,当我尝试使用计时器刷新显示上述推文的 form_load 时,我得到 NullReferenceException 是未处理的错误。我尝试将时间间隔从 20 秒更改为 40 秒,以防万一问题出在时间间隔上,但问题仍然存在,因此我认为问题不在于时间间隔。如果有人能帮我解决这个问题,我将不胜感激。

下面是刷新 Form1_Load 的时间:

        var timer = new Timer();
        timer.Tick += new EventHandler(Form1_Load);
        timer.Interval = 20000; //40 seconds
        timer.Start();

这是我得到错误的地方:

    private void Form1_Load(object sender, EventArgs e) // form load bolumu
    {

        listView1.Items.Clear();
        tweetid.Items.Clear();
        userid.Items.Clear();
        username.Items.Clear();

        var received= service.ListTweetsMentioningMe(new ListTweetsMentioningMeOptions { Count = 15 });

        **foreach (var tweet in received)** --> This is where I get the error NullException
        {
            ListViewItem lvi = new ListViewItem(tweet.Text);
            listView1.Items.Add(lvi);
            lvi.SubItems.Add("@" + tweet.User.ScreenName.ToString());
            lvi.SubItems.Add(tweet.CreatedDate.ToString());

            userid.Items.Add(tweet.User.Id.ToString());
            tweetid.Items.Add(tweet.Id.ToString());

        }

再次感谢您。

【问题讨论】:

    标签: c# twitter timer tweetsharp


    【解决方案1】:

    上周我正好遇到了这个问题。我强烈怀疑它与访问令牌过期或其他错误有关:我经常看到在我的程序活动 5 分钟后发生这种情况(每 20 秒轮询一次)。

    我添加了一些代码来检查返回值是否为null,在这种情况下只记录一条诊断消息,否则将其视为空列表。我曾经看到它从这种情况中恢复,但通常一旦它开始返回null,它就会继续这样做。我怀疑(但尚未检查源代码)某处的代码正在捕获异常并在任何错误时返回null(如果确实是原因,这显然很烦人) .

    当然,这并不能帮助您立即解决问题 - 除了建议我使用过的相同的 icky 解决方法(将 null 视为空并记录),但这至少表明这不是什么 你做错了——除非我做错了同样的事情:)

    编辑:我现在查看了 TweetSharp 代码,看起来 TweetSharp 和 Hammock 之间的交互有效地掩盖了异常,这是非常遗憾的。因此,null 的返回值不一定表示访问令牌问题 - 它只是“错误”:( 调整 TweetSharp 代码库以适当地抛出异常可能不会太难......或者它可能值得寻找替代 API。

    【讨论】:

    • 所以这个问题基本上没有明确的解决方案?如果是这样,那我就麻烦了:)
    • @user3185027:还没有。我正在查看源以追踪它,但是一周后我才回到我的家人身边,我今天可能无法到达那里......
    • @user3185027:我已经查看了代码 - 请参阅我的编辑。
    • @JonSkeet 这意味着我们应该停止使用 TweetSharp
    • 因为过去两天我面临这个问题,所以我决定切换到 linqtotwitter。但我也面临着这方面的问题。
    【解决方案2】:

    在循环结果之前检查空值:

    var gelen = ts.ListTweetsOnHomeTimeline(new ListTweetsOnHomeTimelineOptions() { Count = 1 });
    if (gelen != null) {
        foreach (var tweet in gelen)
        {
            //    s = tweet.Text;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多