我试图编写一个可以返回值的C#异步函数。
当前功能代码:
public async void getTwitterFollowerCount()
{
var twitterCtx = new TwitterContext(SharedState.Authorizer);
var followers = await (from follower in twitterCtx.Friendship where follower.Type == FriendshipType.FollowerIDs && follower.UserID == "15411837" select follower).SingleOrDefaultAsync();
if (followers != null && followers.IDInfo != null && followers.IDInfo.IDs != null)
{
followers.IDInfo.IDs.Count();
}
}
我一直在尝试类似的东西:
public async int getTwitterFollowerCount()
{
var twitterCtx = new TwitterContext(SharedState.Authorizer);
var followers = await (from follower in twitterCtx.Friendship where follower.Type == FriendshipType.FollowerIDs && follower.UserID == "15411837" select follower).SingleOrDefaultAsync();
if (followers != null && followers.IDInfo != null && followers.IDInfo.IDs != null)
{
return followers.IDInfo.IDs.Count();
}
}
但从来没有让它发挥作用。有人有想法,我怎么能从这个异步函数返回一个值?
非常感谢任何帮助。
答案 0 :(得分:3)
将getTwitterFollowerCount
的返回类型更改为Task<int>
。在MSDN https://msdn.microsoft.com/en-us/library/mt674882.aspx了解更多信息。
答案 1 :(得分:0)
正如其他人所说,
Task<int>
是正确的返回类型。
此外,永远不要有“异步空白”。方法,如果你可以避免它,因为它不可能等待返回void的方法。应该执行此操作的唯一情况是使用事件处理程序。否则,请务必返回&#39;任务&#39;