gpt4 book ai didi

c# - 等待的任务不异步运行

转载 作者:行者123 更新时间:2023-11-30 15:01:45 25 4
gpt4 key购买 nike

我正在尝试异步下载一些 Twitter 信息,但它阻塞了 UI 线程。我正在使用 LinqToTwitter (http://linqtotwitter.codeplex.com/) 下载信息。

这是对任务的调用

PublicTweetListBox.ItemsSource = await getTweets(twitterCtx);

这是任务本身

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;

}

我在等待下载列表的方式上做错了,如果有帮助,TweetViewModel 是自定义类型。

最佳答案

asyncawait 不会神奇地使阻塞代码变为非阻塞。 Linq-to-twitter 不是异步 API,将其粘贴在 Task.FromResult 中将不会执行任何操作。

如果您想将查询推送到后台线程,您可以使用 Task.Run 而不是 Task.FromResult。一种更高效(但更复杂)的解决方案是使用异步 Twitter API。

关于c# - 等待的任务不异步运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13597752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com