2014-01-11 66 views
0

我正在開發一個twitter項目,該項目允許用戶使用C#自動向推特發送推文。我在C#中使用TweetSharp。問題是,當我嘗試刷新顯示使用計時器提到的推文的form_load時,我得到NullReferenceException是未處理的錯誤。我試圖將時間間隔從20秒改變到40秒,以防萬一問題出現在時間間隔內,但問題仍然存在,因此我認爲問題不在於時間間隔。如果有人能夠幫助我解決這個問題,我將非常感激。NullReferenceException在C#中未處理C#Timer TweetSharp

下面是當刷新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()); 

     } 

再次感謝您。

回答

1

我在上週遇到過這個問題。我強烈懷疑它與訪問令牌到期或其他錯誤有關:我經常在我的程序處於活動狀態5分鐘後(每20秒輪詢一次)看到這種情況。

我已經添加了一些代碼來檢查返回值是否爲null,並且只是在此情況下記錄診斷消息,否則將其視爲與空列表相同的方式。我有一旦看到它從這種情況恢復,但通常一旦它開始返回null它只是繼續這樣做。我嫌疑人(但沒有檢查源代碼)某處有代碼正在捕獲異常,只是返回null對任何錯誤(這顯然是煩人的,如果它真的是原因)。

這不會幫助你解決問題立即當然 - 除了建議我用同樣的解決辦法噁心(治療null爲空,日誌記錄),但它至少表明這不是什麼你'做錯了 - 除非我做錯了同樣的事情:)

編輯:我現在看通過TweetSharp代碼,它看起來像TweetSharp和Hammock之間的交互有效地掩蓋異常,這是很可惜。所以返回值null並不一定表示訪問令牌問題 - 這只是「一個錯誤」:(它可能不會太難調整TweetSharp代碼庫來適當地拋出異常,或者它可能是值得尋找替代API

+0

所以基本上沒有明確的解決這個問題,如果是的話,那麼我就會有麻煩? :) – user3185027

+0

@ user3185027:還沒有。我正在查看源代碼來追蹤它,但在一週之後剛回到我的家人,我今天可能無法到達...... –

+0

@ user3185027:我已經看了一遍代碼 - 看我的編輯。 –

-2

檢查NULL值循環的結果之前。

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