Nic*_*ard 3 c# async-await linq-to-twitter
我试图异步下载一些推特信息,它阻止了UI线程.我正在使用LinqToTwitter(http://linqtotwitter.codeplex.com/)下载信息.
这是对任务的调用
PublicTweetListBox.ItemsSource = await getTweets(twitterCtx);
Run Code Online (Sandbox Code Playgroud)
这是任务本身
async Task<List<TweetViewModel>> getTweets(TwitterContext twitterCtx)
{
var tweetList = await Task.FromResult<List<TweetViewModel>>(
(from tweet in twitterCtx.Status
where tweet.Type == StatusType.User
&& tweet.ScreenName == UserName.Text
select new TweetViewModel
{
Name = tweet.User.Name,
Tweet = tweet.Text,
ImageUrl = tweet.User.ProfileImageUrl
})
.ToList());
return tweetList;
}
Run Code Online (Sandbox Code Playgroud)
我在等待下载列表的方式做错了,TweetViewModel是自定义类型,如果有帮助的话.
async
并且await
不要神奇地使阻止代码无阻塞.Linq-to-twitter不是一个异步API,坚持使用Task.FromResult
它将无所作为.
如果要将查询推送到后台线程,可以使用Task.Run
而不是Task.FromResult
.更有效(但更具参与性)的解决方案是使用异步Twitter API.