我在WPF .NET 4.0 C#應用程序中使用TweetSharp並使用經過身份驗證的Twitter服務對象。 我在通過關注者列表迭代來檢索每個單個配置文件時遇到問題。我使用下面的代碼:如何使用遊標檢索TweetSharp的所有Twitter用戶?
TwitterCursorList<TwitterUser> followers = twitterService.ListFollowersOf(userID, -1);
while (followers != null)
{
foreach (TwitterUser follower in followers)
{
//Do something with the user profile here
}
followers = twitterService.ListFollowersOf(userID, (long)followers.NextCursor);
}
我看到一個奇怪的行爲,當我使用這個對我的自己的說法,其中有1271名追隨者寫這篇文章的。第一次運行代碼時,我得到100個關注者的列表,並且在下一個ListFollowersOf調用中,關注者爲空,循環結束。
這裏是怪異的一部分:如果我再次運行此代碼,無論是在同一個應用程序實例,或者如果我停止Visual Studio和重啓,沒關係,我得到一個額外的ieration現在我得到200追隨者回來。如果我再次執行這個技巧,現在我得到300個追隨者,然後我得到一個空值,等等。我重複了很多次,直到上面代碼的一個調用返回了所有1271個關注者。
真的很奇怪的是這最終重置。我認爲這與Twitter API限制重置時間有關,但我沒有證實。我會看到這是否與API重置一致。一旦重置發生,我只有100個追隨者,然後200,等等。
我已審查TweetSharp單元測試及以下職位,他們沒有爲我工作:
你試過'while(followers.NextCursor!= null)'? while循環在'followers'爲'null'時停止,但當'NextCursor'爲'null'時,鏈接問題中的其他示例停止。 – Kiril
我有。 followers.NextCursor返回一個long ?,問題是一旦追隨者變爲null(並且如上所述),我會得到拋出的空引用異常。 – ActiveNick
[與源碼一起提供的測試]之一(https://github.com/danielcrenna/tweetsharp/blob/master/src/net40/TweetSharp.Next.Tests/Service/TwitterServiceTests.cs)檢查「NextCursor」是否爲'null',並且你將它轉換爲long,所以它看起來像是某種引用(我沒有代碼來檢查它)。這裏是檢查:'Assert.IsNotNull(followers.NextCursor);'你仍然可以檢查'followrs'是否爲'null',如果它是'null'則不會引用它,但它看起來像你的while循環應該繼續直到'NextCursor'爲'null' ......至少從其他例子看起來是這樣。 – Kiril