等待任务不是异步运行

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是自定义类型,如果有帮助的话.

Ste*_*ary 5

async并且await不要神奇地使阻止代码无阻塞.Linq-to-twitter不是一个异步API,坚持使用Task.FromResult它将无所作为.

如果要将查询推送到后台线程,可以使用Task.Run而不是Task.FromResult.更有效(但更具参与性)的解决方案是使用异步Twitter API.